我试图在JLabel上连续显示日期和时间。因此,在我看过的上一个教程中,发言人说:“您必须在必要时使用此线程,因为它会占用程序的内存”。
因此,我搜索了其他替代方法,然后找到了Timer和TimerTask,这是在程序的长期运行中最有效的方法?
计时器用于在一定间隔后,延迟或两者结合后运行任务(即TimerTask)。在您的情况下,您可以使用以下方式:
java.util.Timer timer = new java.util.Timer(); timer.schedule(new TimerTask() { public void run() { // do task } }, 0, 1000); //updates every second
请注意,为了更新Swing线程以外的其他线程中的Swing组件,您将需要使用SwingWorker(请参见Swing并发教程),或者使用Swing计时器代替。以下代码使用Swing计时器每秒更新标签的日期:
javax.swing.Timer timer1 = new javax.swing.Timer(0, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { label.setText(new Date()); } }); timer1.setRepeats(true); timer1.setDelay(1000);
我尚未对此进行测试,因此您可能需要对其进行一些调整才能为您工作。