くだすれJava(超初心者用)
レス数が950を超えています。1000を超えると書き込みができなくなります。
0979デフォルトの名無しさん
2007/01/09(火) 22:46:59Swing はシングルスレッドで実装されてて、
イベントディスパッチスレッドってところでイベント処理してる。
その Action をボタンに addActionListener すると
actionPerformed() の処理が終わるまで描画がブロックされて、
5秒過ぎてから今までブロックされてた描画イベント
(0秒、1秒・・・4秒と表示する)がまとめて起きる。
for (int i = 5; i >= 0; i--) {
new Runnable(){
public void run(){
// i秒待つ処理。
// Action があるスレッドとは別スレッドで動くので Action をブロックしない。
SwingUtilities.invokeLater(new Runnable(){
public void run(){
// ラベルを "i秒" にする処理
}
});
}
}.start();
}
動くかどうか試してないけど、こんな感じに書くことになるはず。
イベントディスパッチスレッドやSwingUtilitiesでググると
詳しい解説とか拾えると思われ。
レス数が950を超えています。1000を超えると書き込みができなくなります。