2012-04-04 51 views
1

我正在使用NetBeans。點擊一個切換按鈕後,我想做一個簡單的3-2-1倒計時,在按鈕上顯示倒計時。我在Java中使用任何與時間相關的東西有點新,但是使這種簡單的倒計時最簡單的方法似乎只是使用Thread.sleep(),如下所示。程序等待3秒鐘,並將按鈕的文本打印到命令行,但按鈕上的文本本身不會改變。任何想法爲什麼會發生這種情況,以及如何解決它?謝謝!jToggleButton.setText()不會更改按鈕上的文本

jToggleButton1.setText("3..."); 
System.out.println(jToggleButton1.getText()); 
try{ 
    Thread.sleep(1000); 
} 
catch(InterruptedException e){} 
jToggleButton1.setText("2..."); 
System.out.println(jToggleButton1.getText()); 
try{ 
    Thread.sleep(1000); 
} 
catch(InterruptedException e){} 
jToggleButton1.setText("1..."); 
System.out.println(jToggleButton1.getText()); 
try{ 
    Thread.sleep(1000); 
} 
catch(InterruptedException e){} 
+1

以下是如何使用Swing Timer的示例:http://stackoverflow.com/questions/ 9662222 /使用戶等待使用swing/9662385#9662385 – 2012-04-04 22:28:29

回答

2

你的問題是你正在做事件調度線程中的所有操作。所以UI沒有機會更新。您需要使用SwingWorker或更好的搖擺計時器(具有Action回調函數的計時器)以使其正常工作

+0

+1肯定使用'javax.swing.Timer'。 – mre 2012-04-04 22:15:31

+1

好的,謝謝!我會嘗試使用搖擺計時器 – 2012-04-04 22:18:22