我想使用 Java 创建一个简单的时钟。代码很简单,我举个例子:
for(int i=0;i<=60;i++)
jLabel11.setText( Integer.toString(i) );
问题是当我运行我的程序时,结果并没有按顺序显示每个更新。它立即只显示 60 位,而不显示从 1 到 2 到 3 的变化......
我该如何解决这个问题?
我想使用 Java 创建一个简单的时钟。代码很简单,我举个例子:
for(int i=0;i<=60;i++)
jLabel11.setText( Integer.toString(i) );
问题是当我运行我的程序时,结果并没有按顺序显示每个更新。它立即只显示 60 位,而不显示从 1 到 2 到 3 的变化......
我该如何解决这个问题?
问题是对 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 计时器。