我正在尋找一種方法,以JLabel的形式在JFrame上顯示當前日期和時間,但會自動更新它。一旦它被繪製到窗格中,我不需要擔心手動更新它,因爲它會每2秒刷新一次。如何在Java Swing中顯示更改的文本(即,顯示時間以秒爲單位)
有沒有適當的方法來做到這一點?而不是每2秒手動更改一次JLabel的文本值。
我正在尋找一種方法,以JLabel的形式在JFrame上顯示當前日期和時間,但會自動更新它。一旦它被繪製到窗格中,我不需要擔心手動更新它,因爲它會每2秒刷新一次。如何在Java Swing中顯示更改的文本(即,顯示時間以秒爲單位)
有沒有適當的方法來做到這一點?而不是每2秒手動更改一次JLabel的文本值。
使用javax.swing.Timer
可以確保EDT上的更新發生在EDT上。
Timer t = new javax.swing.Timer(2000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
yourLabel.setText(...);
}
});
t.start();
使用擺動Timer。正如the tutorial所解釋的那樣,它是這項工作所需的工具。
它們的唯一替代方案是在TimerTask
中嵌入SwingUtilities.invokeLater()
或SwingUtilities.invokeAndWait()
。
感謝您的指南鏈接 – n0pe 2011-06-13 13:28:10
正是我需要的,謝謝 – n0pe 2011-06-13 13:27:44
以及定時器的一些示例http://www.java2s.com/Code/Java/Swing-JFC/Anappletthatcountsdownfromaspecifiedtime.htm – mKorbel 2011-06-13 13:29:29