我想用Java创建一个简单的时钟。代码非常简单,我将举一个例子:
for(int i=0;i<=60;i++)
jLabel11.setText( Integer.toString(i) );
问题是当我运行我的程序时,结果没有按顺序显示每个更新。 它只显示60位数字,没有显示从1到2到3的变化......
我该如何解决这个问题?
答案 0 :(得分: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教程 - How to use Swing Timers。