Foro sobre Java SE > Esperar al jDialog
Una posible solución:
1.- Creas un PropertyChangeListener y lo añades al JFrame
2.- Colocas el código del JOptionPane dentro del listener.
3.- En el método de salida del JFrame, ejecutas un fireChangeListener.
De ese modo, cuando salgas del JFrame, se disparará el PropertyChangeListener, y su único método ejecutará tu JOptionPane.
Puesto que el método fire te pide un String de identificación, basta con comprobar en el listener que ese String es el disparado.
Voy a leer un poco de lo que me esta proponiendo, digiero y pruebo, después te cuento como me fue...
Fail
Que pena contigo choces, pero solo entiendo la teoria pero la practica nada, como que tengo falencias... no hay un metodo mas para novatos. :(
Ese es el procedimiento que uso cuando quiero que un JFrame devuelva algún valor, antes de que se cierre, y que ese valor pueda ser utilizado en el bloque de código desde donde se ha creado el JFrame.
Vamos a ver si con algo de código ves la solución con más claridad.
//---------- dentro de tu JFrame
firePropertyChange("FrameResalpa1", null, null);
esta línea debes incluirla justo antes de que se cierre el JFrame. No sé que método usas para cerrarlo. En este caso, no se envía de salida ningún valor, de ahí esos parámetros null. Solo se usa para saber cuándo se cierra el JFrame.
Normalmente, un JFrame se cierra mediante un botón de salida, o mediante el aspa de la barra de título. Si me dices, en tu caso, cómo lo haces, puedo escribirte el código completo.
//-------- en tu bloque principal de código, desde donde creas tu JFrame
Creas una clase como ésta:
private class AgregarDeportistaListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("FrameResalpa1")) {
JOptionPane.showMessageDialog(null,"Hola mundo");
}
}
}
a continuación, según el código que publicaste más arriba:
agregarDeportista.setVisible(true);//esto es un jframe
agregarDeportista.addPropertyChangeListener(new AgregarDeportistaListener());
Esta segunda línea registra el listener que has creado para tu JFrame, de tal manera que, cuando se cierre el JFrame, y se dispare el firePropertyChange("FrameResalpa1", null, null);
se ejecutará, en ese momento, el propertyChange(PropertyChangeEvent evt), y se abrirá el JOptionPane.
Ese método equals asegura que solamente se ejecute el JOptionPane cuando se haya cerrado tu frame. Si tienes más JFrame parecidos, a cada uno le asignas un "nombre" diferente en el fire, y puedes comprobar cuál de ellos te interesa que se active en el listener.
Ya sé que Swing es una "mala bestia" :D pero no conozco otra manera más sencilla de hacer lo que pretendes.
off topic: me ha gustado esa palabra, falencias :)
No la conocía, puesto que creo que en España no se usa. Al menos nunca la había oído.
En España se usa mucho carencias.
Siempre se aprende algo nuevo. :D
Excelente la explicación, muchas gracias.
ahh; nosotros también usamos carencias y sus conjugaciones, aunque no soy un esperto te cuento que usamos carencias con cosas que podemos ver o tocar, por ejemplo "Estamos carente de dinero", en el resto de cosas usamos falencias por ejemplo "la Ley 30 en Colombia tiene falencias"
Me toca leeeeer mas sobre Java, aun me falta muchisimo por aprender.
No se si el titulo es el apropiado, la pregunta quizas es inocente, he buscado y no he encontrado nada y sospecho que no se plantear la pregunta, asi que escribire un pqueño codigo.
--------------------------------------------------------
JOptionPane.showMessageDialog(null,"Hola mundo");
agregarDeportista.setVisible(true);//esto es un jframe
//por experiencia veo que se ejecuta el JOptio... y hasta que no se cierre el JOptio... no se ejecuta la siguiente linea 'agregarDeportista.setVisible(true);'
La pregunta es, si invierto el orden de las lineas así:
agregarDeportista.setVisible(true);//esto es un jframe
JOptionPane.showMessageDialog(null,"Hola mundo");
¿Como hago para que se ejecute el JOpt... despues que se halla cerrado la ventana del Jframe agregarDeportista?