SwingUtilities.invokeLater を使用して、モーダル ダイアログを SwingWorker スレッドで表示されるように設定しています。ダイアログが表示されるまで SwingWorker スレッドを待機させたい。これを行う最善の方法は何ですか?SwingWorker オブジェクトの doInBackground() メソッドに次のコードを追加しました。
synchronized (myDialog) {
while (!myDialog.isVisible()) {
myDialog.wait();
}
}
MyDialog クラスのオーバーライドされた setVisible() メソッドでは、次のようになります。
public void setVisible(boolean enabled) {
synchronized (this) {
notifyAll();
}
super.setVisible(enabled);
}
ただし、タイミングの問題があるため、これは機能していないようです。
これを行うための良い方法を見つけようとしていますが、かなりイライラしています!