2012-04-04 18 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

スイングタイマーの使用例を次に示します:http://stackoverflow.com/questions/ 9662222/make-the-user-wait-using-swing/9662385#9662385 –

答えて

2

問題は、イベントディスパッチスレッドですべての操作を行っていることです。したがって、UIは更新する機会がありません。この作業を正しく行うためには、SwingWorker以上のスイングタイマー(アクションコールバックを持つスイングタイマー)を使用する必要があります

+0

+1は間違いなく 'javax.swing.Timer'を使用します。 – mre

+1

さて、ありがとう!スイングタイマーで試してみる –

関連する問題