Javaを使って簡単な時計を作りたいです。コードは非常に単純なので、例を示します。
for(int i=0;i<=60;i++)
jLabel11.setText( Integer.toString(i) );
問題は、プログラムの実行中に結果が各更新を順番に表示しなかったことです。1から2、3への変化を示さず、すぐに60桁のみを表示します...
この問題を解決するにはどうすればよいですか?
Javaを使って簡単な時計を作りたいです。コードは非常に単純なので、例を示します。
for(int i=0;i<=60;i++)
jLabel11.setText( Integer.toString(i) );
問題は、プログラムの実行中に結果が各更新を順番に表示しなかったことです。1から2、3への変化を示さず、すぐに60桁のみを表示します...
この問題を解決するにはどうすればよいですか?
問題は、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 のチュートリアル -スイング タイマーの使用方法を参照してください。