[英]How to change a JLabel's text in a loop without switching so fast the user can't see it?
我想使用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計時器》 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.