Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Extraño problema con JFrame (http://www.forosdelweb.com/f45/extrano-problema-con-jframe-352377/)

MikiBroki 23/11/2005 13:47

Extraño problema con JFrame
 
Buenas,

Tengo un JFrame con un menú y un WindowListener. Cuando se hace click en la 'x' se cierra pasando por el WindowClosing, en el que pregunto si se quiere salir o no.

Asimismo, en el menú Salir lanzo un evento que llama a dicho WindowClosing para centralizar la salida:

Código:

this.windowClosing( new WindowEvent(this, AWTEvent.RESERVED_ID_MAX + 1) );
Funciona todo perfectamente... menos cuando en una de las opciones del menú abro otra ventana:

Código:

this.removeWindowListener(this);
ventanaSeleccionarExpediente = new SeleccionarExpediente(this, "Expedientes desde el [" + inicio + "/" + anoinicio + "] hasta el [" + fin + "/" + anofin + "]", this, aDatos);
this.addWindowListener(this);

El problema está en que después de abrir esta ventana y cerrarla, al cerrar el JFrame principal desde el icono 'x' el método WindowClosing se me ejecuta dos veces (mostrándose el cuadro de diálogo en que pregunto si se desea salir otras tantas)

El asunto es que he probado a quitar el 'addWindowListener()' de arriba y no ocurre, a ver si me podeis decir algo.

Gracias

MikiBroki 23/11/2005 14:25

Acabo de recordar que la ventana no se abre en realidad directamente desde el JFrame principal... sino que se abre un JDialog, y después de introducir unos valores se abre el otro con los resultados.

Ambos JDialog tienen implementados sus interfaces en el JFrame principal, y el segundo se descarga cuando se cierra el tercero (el de los resultados).

El problema lo he solucionado quitando el remove y el add antes de hacer el "new SeleccionarExpediente(...)", lo que no me queda claro es:

1) El quitar y volver a poner el WindowListener, estando en el JFrame principal... ¿por qué hacía que se llamara dos veces al WindowClosing() del JFrame principal al hacer click en "x"?

2) Con ello, por qué no ocurría lo mismo al salir desde el menú (que llama al WindoClosing)?

MikiBroki 23/11/2005 14:44

Bien, después de seguir dándole a la cabeza llego a la conclusión de que:

1) al abrirse el primero JDialog quito el WindowListener
2) al abrirse el segundo JDialog quito el WindowListener..
3) al cerrarse el segundo JDialog pongo un WindowListener
4) al cerrarse el primer JDialog pongo un WindowListener más...

a) O sea que al cerrar la ventana desde 'x' se ejecutarían dos WindowClosing(), no dos veces el mismo...

b) cuando salía desde el menú creando un evento... ?

Espero que alguien me diga si voy desencaminado...


La zona horaria es GMT -6. Ahora son las 04:58.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.