実行のメインスレッドからいくつかのダイアログボックスをユーザーに表示する必要がある単純なグルーヴィーなスクリプトがあります。
私のスイングの知識は限られており、錆びていますが、イベントディスパッチスレッド (EDT) に GUI を保持するように注意する必要があることについて読んだことを思い出します。
メイン スレッドから静的JOptionPane.showMessageDialog
メソッドを呼び出すだけで、GUI を EDT に保持するという正しい慣行に違反すると想定するのは正しいでしょうか?
次のコード例のように、実際に swing.utils.invokeAndWait メソッドを使用する必要がありますか?
void showHelloThereDialog()
throws Exception {
Runnable showModalDialog = new
Runnable() {
public void run() {
JOptionPane.showMessageDialog(
myMainFrame, "Hello There");
}
};
SwingUtilities.invokeAndWait
(showModalDialog);
}
上記では、invokeAndWait の完了後にメッセージ ダイアログ以外の値を使用できるようにするために何もしません。
おそらく、グルーヴィーな「クロージャー」が Runnable を実装するという事実は、上記よりも単純なコードになるでしょう。
invokeAndWait は必要ですか? もしそうなら、誰かが正しい実装の例を挙げて、groovyを使用してconfirmDialogのような結果を得ることができますか?