簡體   English   中英

如何在循環中更改JLabel的文本而不切換得使用戶看不到它呢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM