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

Cerrar formularios

Estas en el tema de Cerrar formularios en el foro de Java en Foros del Web. Hola gente, tengo la siguiente situacion "ancestral" XD digo ancestral porque ya hace rato tenia este inconveniente y lo resolvi replanteando mi diseño, hoy me ...
  #1 (permalink)  
Antiguo 28/06/2012, 07:45
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Cerrar formularios

Hola gente, tengo la siguiente situacion "ancestral" XD
digo ancestral porque ya hace rato tenia este inconveniente y lo resolvi replanteando mi diseño, hoy me topo con la misma situacion y quiero "encarar el problema en la programacion"

El problema es el siguiente:
Estoy usando un diseño de pantallas MDI, es decir tengo un contenedor principal y ahi voy creando los frames internos (jinternalframe)
Llamo a los frames internos (jinternalframe) con el siguiente codigo

frmPantalla1 frame = new frmPantalla1();
this.contenedorPrincipal.add((frame));
frame.show();

En la pantalla 1 llamo a la pantalla 2 , en la pantalla 2 llamo a la pantalla 3, en la pantalla 3 llamo a la pantalla 4.

pantalla 1 ----------> pantalla 2 ------------------>pantalla 3------------------>pantalla 4

pantalla 1


El problema puntual es cuando cierro la pantalla 4 quiero cerrar tambien la pantalla 3 y la pantalla 2 para volver a la pantalla 1

¿Alguien sabe como puedo realizar esto? sus colaboraciones seria bien recibidas
  #2 (permalink)  
Antiguo 28/06/2012, 07:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Cerrar formularios

Pues en la pantalla 3, cuando abras la pantalla 4, añade un pantalla4.addInternalFrameListener(). Con ese listener la pantallla 3 puede enterarse cuando se cierra la 4 para cerrarse ella misma. Y así sucesivamente con las demás.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 28/06/2012, 08:01
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Cerrar formularios

Mas o menos capto tu idea, no la termino de agarrar, podrias detallar un poco mas tu respuesta.
muchas gracias , de todas maneras
  #4 (permalink)  
Antiguo 28/06/2012, 08:20
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Cerrar formularios

En el código de pantalla3, cuando creas/abres la pantalla4

Código java:
Ver original
  1. pantalla4 = new o show()
  2. pantalla4.addInternalFrameListener (new InternalFrameListener() {
  3.     ....
  4.     public void internalFrameClosed(InternalFrameEvent e) {
  5.           pantalla3.hide();
  6.     }
  7.     ....
  8. })

Está de memoria, seguro que hay cosas que no son exactamente así, echa un ojo a la API para sintaxis exacta http://docs.oracle.com/javase/6/docs...eListener.html
Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 28/06/2012, 13:23
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Cerrar formularios

a ver si entendi, antes de abrir la pantalla 4 agregas el metodo
-------------En la Pantalla 3---------------------
frame.addInternalFrameListener(new InternalFrameListener());
--------------------------------------------------------------------------------------

-----------En la pantalla 4---------------------------------------------------

public void internalFrameClosed(InternalFrameEvent e) {
pantalla3.hide();
}

no entiendo como se relacionan los metodos, podria aclararme un poco mas la idea?
  #6 (permalink)  
Antiguo 28/06/2012, 13:39
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Cerrar formularios

En el trozo de código que te he puesto, fíjate en las llaves de detrás de new InternalFrameListener() y dónde se cierran. No pone en ningún sitio que tengas que hacer nada de código en pantalla4, va todo en pantalla3

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 28/06/2012, 14:05
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Cerrar formularios

Estoy haciendo un esfuerzo grande para poder entender el trozo de codigo que me pasaste. Va todo en la pantalla 3 . Ok.
Yo abro la pantalla 4 en un evento (txtCategoriaMouseClicked) en la pantalla 3 como esta aca abajo.
Pregunto:
private void txtCategoriaMouseClicked(java.awt.event.MouseEvent evt) {
frmSeleccionMenu frame = new frmSeleccionMenu();
restaurante.frmPrincipal.contenedorPrincipal.add(f rame);

//aca agrego el codigo que me pasaste
frame.addInternalFrameListener (new InternalFrameListener() {

public void internalFrameClosed(InternalFrameEvent e) {
//this.hide();

}

});
}

Y el compilador de netbeans me marca un error /sugerencia y me da 2 sugerencia:
1) implementar todos los metodos abtracto
2) convertir la clase en abstracta

Creo que estamos cerca de la solucion final, alguien tiene una sugerencia ? desde ya muchas gracias
  #8 (permalink)  
Antiguo 29/06/2012, 06:43
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Cerrar formularios

La sugerencia te la da netbeans, te da dos.

Fijate en el código que te puse, hay puntos suspensivos delante y detrás del método internalFrameClosed(). Los puse porque InternalFrameListener tiene más métodos que tienes que implementar (sugerencia 1 de netbeans) (Lo siento, pensé que sabías implementar una interfaz en java). Posiblemente con un solo click en algún sitio netbeans te implemente los métodos que faltan.

La otra opción es hacer new InternalFrameAdapter() en vez de new InternalFrameListener(), eso no debería fallarte porque InternalFrameAdapter es una clase que implementa todos los metodos de la interfaz InternalFrameListener y tu solo tendrías que sobreescribir (override) el que te interese. Te aconsejo que pongas @Override en el método para asegurar que no te equivocas con su sintaxis

Código java:
Ver original
  1. frame.addInternalFrameListener (new InternalFrameAdapter() {
  2.    @Override
  3.    public void internalFrameClosed(InternalFrameEvent e) {
  4.         //this.hide();    // Este this no te funcionara, tendrás que poner algo como this.pantalla3.hide(), suponiendo que pantalla3 sea el nombre de la clase donde está todo este código.
  5.    }
  6. });

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: cerrar, programa, formulario
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 13:10.