我有一个简单的 groovy 脚本,从它的主线程执行需要向用户显示一些对话框。
我的挥杆知识有限且生疏,但我记得读过有关需要小心地将 GUI 内容保留在事件调度线程 (EDT) 上的信息。
如果我只是从我的主线程调用静态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 完成后,除了消息对话框之外,上面的内容没有做任何事情来使值可用。
据推测,groovy 'closures' 实现 Runnable 将使代码比上面更简单。
是否需要 invokeAndWait?如果是这样,有人请举一个正确实现的例子来获得类似使用groovy的confirmDialog之类的结果吗?