1

我想使用 Java 创建一个简单的时钟。代码很简单,我举个例子:

for(int i=0;i<=60;i++)
   jLabel11.setText( Integer.toString(i) );

问题是当我运行我的程序时,结果并没有按顺序显示每个更新。它立即只显示 60 位,而不显示从 1 到 2 到 3 的变化......

我该如何解决这个问题?

4

1 回答 1

1

问题是对 UI 的更改应该在事件调度线程上运行,但是阻塞这个循环(并阻塞 UI)将阻止屏幕重新绘制。相反,使用计时器来执行定期更新,例如

Timer timer = new Timer();

ActionListener updater = new ActionListener()
{
   int count;
   public void actionPerformed(ActionEvent event) {
      jLabel11.setText( Integer.toString(count++) );
      if (count==60)
         timer.stop();
   }
}
timer.setDelay(100);
timer.addActionListener(updater);
timer.start(); 

请参阅 Sun 教程 -如何使用 Swing 计时器

于 2010-06-16T19:09:43.557 回答