現在の時刻を表示する Java GUI を作成しようとしています。現在、現在の時刻を表示させることができますが、起動時のみです。その後、それは単にその時間に永遠に残ります。その理由は、毎秒新しい現在の時刻に自動的にロードする方法がわからないためです。これまでの私の関連コードは次のとおりです。
// Getting the current time...
long epoch = System.currentTimeMillis() / 1000;
String date = new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date(epoch * 1000));
// Creating the panel...
JLabel lblThetime = new JLabel(date);
sl_panel.putConstraint(SpringLayout.NORTH, lblThetime, 55, SpringLayout.SOUTH, lblIBeA);
sl_panel.putConstraint(SpringLayout.WEST, lblThetime, 139, SpringLayout.WEST, panel);
lblThetime.setFont(new Font("Avenir Next", Font.PLAIN, 40));
// Adding the time to the panel
panel.add(lblThetime);
// My refresher which doesn't work
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
removeAll();
validate();
repaint();
}
}, 1000, 1000);
このスレッドの情報を使用して復習しようとしましたが、役に立たず、ウィンドウ (実行時) は空白です。次に、このスレッドの情報を使用して別のリフレッシャーを作成しようとしましたが、これを作成しました:
// My refresher which doesn't work
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
contentPane.remove(lblThetime);
contentPane.add(lblThetime);
}
}, 1000, 1000);
とcontentPane
定義した上でprivate JPanel contentPane;
これも機能しませんでしたが、時間自体が空白で、ウィンドウ内の残りのコンテンツ (もう 1 つの JLabel (テキストのみ)) は通常どおりです。
リフレッシャーがないと、上記のように動作します。これにより、開始した時刻が表示され、その時刻が永久に残ります。
WindowBuilderでEclipseを使用しています。(そして、私は(おそらく明らかに)Java GUIの完全な初心者ですxD)