Tengo un script groovy simple que desde su hilo principal de ejecución necesita mostrar algunos cuadros de diálogo para el usuario.¿Cuál es el uso seguro de subprocesos (envío de eventos) para JOptionPane.showMessageDialog y swing.utils.invokeAndWait?
Mi conocimiento oscilación es limitada y oxidado, pero recuerdo haber leído acerca de la necesidad de tener cuidado de mantener las cosas GUI en el hilo de despacho de eventos (EDT).
Si acabo de llamar al método estático JOptionPane.showMessageDialog
desde mi hilo principal, ¿estoy en lo correcto al asumir que esto violaría la práctica correcta de mantener cosas de GUI en el EDT?
Debería ser en realidad usando el método swing.utils.invokeAndWait tales como en el siguiente ejemplo de código?
void showHelloThereDialog()
throws Exception {
Runnable showModalDialog = new
Runnable() {
public void run() {
JOptionPane.showMessageDialog(
myMainFrame, "Hello There");
}
};
SwingUtilities.invokeAndWait
(showModalDialog);
}
Ahora el no hacer nada para que los valores de algo que no sea un diálogo de mensaje disponibles después invokeAndWait completa anteriormente.
Es de suponer que el hecho de que los cierres '' maravilloso implementan Ejecutable hará para el código más simple que la anterior.
¿Se requiere invokeAndWait? Y si es así, ¿podría alguien dar un ejemplo de implementación correcta para obtener el resultado de algo así como un confirmDialog usando groovy?
Si está escribiendo código Swing y está usando Groovy, debería echarle un vistazo a Griffon. –
@Don Gracias por la sugerencia, estoy al tanto de Griffon y definitivamente es interesante. Por otro lado, es mucho más pesado de lo que necesito en este momento y también siento que quiero entender un poco mejor las tuercas y los tornillos antes de confiar en tanta "magia". La única documentación que realmente conozco es el MEAP "Griffon in Action" http://www.manning.com/almiray/. ¿Sabes si es bueno (o si otras fuentes son útiles)? –