swingを色々弄っています。
例えばボタンを押した時にカウントダウンを始める、等のように、
少しアニメーションっぽく表示させたいのですが、
途中結果が表示されずに結果のみ表示されてしまうのはどうしてでしょうか?
class Action implements ActionListener {
public void actionPerformed(ActionEvent event) {
testBtn.setEnabled(false);
for (int i = 5; i >= 0; i--) {
testLabel.setText(i + "秒");
try {
Thread.sleep(1000);
} catch (InterruptedException e ) {
}
}
testBtn.setEnabled(true);
}
>>977 setEnabled を抜かしたらどうなる?
>>977 Swing はシングルスレッドで実装されてて、
イベントディスパッチスレッドってところでイベント処理してる。
その 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でググると
詳しい解説とか拾えると思われ。
>>978 結果は同じでした。setEnabled自体も反映されていませんでした。
>>979 参考に書き直したところ、無事にカウントダウンさせることができました。
今後イベントディスパッチスレッドについて勉強します、
ありがとうございました。
981 :
デフォルトの名無しさん:2007/01/10(水) 22:31:13
Javaスタートブック高田美樹著だとCLASSPATHを設定しろなんて書いてないぞ!
おい、実行できね〜よ〜、糞サンマイクロ!!!!!!!!!!!!!!
てめ〜らインケンやろう〜実行できるファイル送れ〜
ホームページをいちいち変えるなよ馬鹿やろう。ホームページのアドレス
変えやがって、ず〜と同じでいいだろこのやろう
次の質問はまだですか?
環境変数としてCLASSPATHなんて設定していないんですが、
なぜかコンパイルも実行もできてしまいます。
はやりのノロウイルスにでも感染しているのでしょうか?
日本脳炎です
>>983 環境変数 PATH に指定されてるどこかに
javac.exe や java.exe が居て、
それらが自身の実行環境がどこにあるか知っている
(javac や java の内部で CLASSPATH とかを設定してるイメージ)
ので実行できる。
>ノロウィルス
あんまり面白くもないな
986 :
デフォルトの名無しさん:2007/01/13(土) 00:56:31
隣に座っているPGが、テストデータの名前欄に「のさく」、「みゆきち」、「ほちゃ」と入れてます。
何かの暗号なのでしょうか?
987 :
デフォルトの名無しさん:2007/01/13(土) 01:47:50
行く道には野花が咲いています。
この風景の中で飲むお茶はさぞおいしい事でしょう。
>>986 野川さくら、沢城みゆき、堀江由衣
その隣の住人は野川さくらのアンチだな
誰?
w
ww
www
break;
System.exit(1);
break;
for (; res<=1000; res++) {
さて、次スレだが。
1000ゲッターの人、次スレ立て&誘導よろしく。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。