Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 23-nov-2005, 12:47   #1 (permalink)
MikiBroki está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 848
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
__________________
Aprendiz en mucho, maestro en nada.
Si por cada solución recibida aportas otra, ganamos todos.
MikiBroki está desconectado   Responder Citando
Antiguo 23-nov-2005, 13:25   #2 (permalink)
MikiBroki está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 848
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)?
__________________
Aprendiz en mucho, maestro en nada.
Si por cada solución recibida aportas otra, ganamos todos.
MikiBroki está desconectado   Responder Citando
Antiguo 23-nov-2005, 13:44   #3 (permalink)
MikiBroki está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 848
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...
__________________
Aprendiz en mucho, maestro en nada.
Si por cada solución recibida aportas otra, ganamos todos.
MikiBroki está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 11:59.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93