Foros del Web » Programación para mayores de 30 ;) » Java »

Extraño problema con JFrame

Estas en el tema de Extraño problema con JFrame en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/11/2005, 13:47
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
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
  #2 (permalink)  
Antiguo 23/11/2005, 14:25
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
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)?
  #3 (permalink)  
Antiguo 23/11/2005, 14:44
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
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...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:25.