У меня есть простой groovy script, который из основного потока выполнения должен отображать пользователю некоторые диалоговые окна.
Мои знания о свингах ограничены и заржавели, но я помню, что читал о необходимости быть осторожным, чтобы держать элементы графического интерфейса в потоке диспетчеризации событий (EDT).
Если я просто вызову статический метод JOptionPane.showMessageDialog
из своего основного потока, правильно ли я предполагаю, что это нарушит правильную практику хранения материалов с графическим интерфейсом в 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?