※ ChatGPTを利用し、要約された質問です(原文:setEnabledが効かないのはなぜでしょう)
setEnabledが効かない理由とは?
このQ&Aのポイント
setEnabledが効かない原因と解決方法を教えてください。
イベント処理メソッド内でsetEnabledが効かない理由を教えてください。
ダミーメソッド呼び出し後のsetEnabledの動作について説明してください。
下記のソースはあるjButton1(JButtonクラス)がクリックされた時の
イベント処理メソッドです。
dummyMethodメソッド呼び出しの部分で多少時間のかかる処理を行いますが、
現在開発中の為、ダミーにしてます。(一瞬で返ってきます)
その際、そのメソッド呼び出し前でjButton1をdisableに、jButton2を
enableしておき、メソッド呼び出し後に今度はjButton1をenable、jButton2を
disableにしようと思っております。
今まで、一瞬で返ってくるおかげで処理的にうまくいっているのだろうと
思っていたのですが、dummyMehodメソッド呼び出し後にsleepを入れてみると、
(ソースのコメントをはずした)dummyMethodメソッド呼び出し前のsetEnabledが効いていませんでした。
イベント処理メソッド内でsetEnabledは行えないのでしょうか?
よろしくお願いします。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jButton1.setEnabled(false);
jButton2.setEnabled(true);
dummyMethod();
//try {
// Thread.sleep(2000);
//} catch (InterruptedException ie) {
//}
jButton1.setEnabled(true);
jButton2.setEnabled(false);
}
お礼
良くわかりました。納得です。あと、簡単なプログラムを作成し、同じように子スレッド内でJOptionPaneを使用したらうまく、了解ボタンで閉じました。これについては、別途調査します。ありがとうございました。