如何使用计时器,例如javax.swing.Timer
?(不要在导入时出错,还有更多的 Timer 类。)
public static void main(String... args) throws InterruptedException {
final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
int interval = 1000; // 1000 ms
new Timer(interval, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar now = Calendar.getInstance();
System.out.println(dateFormat.format(now.getTime()));
}
}).start();
Thread.currentThread().join();
}
这将简单地每秒执行一次 ActionListener 的主体,打印当前时间。
最后一行的Thread.join
调用不是普遍需要的,它只是需要让这个示例代码运行直到手动停止进程。否则,它会立即停止。
在一个真正的应用程序中,如果它是一个 Swing 应用程序,那么计时器应该自己处理线程,所以你不必担心它。
编辑
将上述示例集成到您的应用程序中非常简单,只需将其添加到initGUI
方法中,而不是将当前时间打印到 System.out 设置更改给定标签的文本:
public void initGUI() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(800, 600));
setLayout(null);
Calendar now = Calendar.getInstance();
tijd = new JLabel(dateFormat.format(now.getTime()));
tijd.setBounds(100, 100, 125, 125);
window.add(tijd);
new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar now = Calendar.getInstance();
tijd.setText(dateFormat.format(now.getTime()));
}
}).start();
pack();
}