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

problema de varios jinternalframe

Estas en el tema de problema de varios jinternalframe en el foro de Java en Foros del Web. Hola gente, una consulta a los Java Developers: estoy trabajando con formularios MDI en mi proyecto: tengo un contenedor principal y varios formularios JInternalFrame, para ...
  #1 (permalink)  
Antiguo 23/06/2012, 06:38
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
problema de varios jinternalframe

Hola gente, una consulta a los Java Developers: estoy trabajando con formularios MDI en mi proyecto: tengo un contenedor principal y varios formularios JInternalFrame, para llamar a un formulario, utilizo este codigo:
frmClase1 frame = new frmClase1();
proyecto.frmPrincipal.contenedorPrincipal.add(fram e);
frame.show();
Hasta aca todo bien, el tema es cuando quiero desde un formulario llamar a otro formulario que ya a esta abierto, es decir, quiero mostrar un formulario ya abierto sin hacer una nueva instancia, alguien sabe como hacerlo, ya probe varias formas pero me crea una instancia nueva.
  #2 (permalink)  
Antiguo 25/06/2012, 16:51
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problema de varios jinternalframe

Guarda las instancias en una variable (estatica puede ser) para luego tener acceso desde cualquier parte de tu aplicacion a los formularios ya creados.

Dependiendo de tus necesidades, podrias crear un Map<String, JInternalFrame> y tener una llave con su respectiva instancia para luego referenciarlos desde el codigo.

Código Javascript:
Ver original
  1. class NoSeQue {
  2.   public static Map<String, JInternalFrame> ventanasAbiertas = new HashMap<String, JInternalFrame>();
  3. }
  4. //Luego en otra parte:
  5. NoSeQue.ventanasAbiertas.put("formularioNuevoUsuario", new frmClase1());
  6. //Y para obtener la instancia:
  7. NoSeQue.ventanasAbiertas.get("formularioNuevoUsuario");

Por supuesto, recuerda liberar los recursos innecesarios y destruir las ventanas que no vayas ya a utilizar
  #3 (permalink)  
Antiguo 28/06/2012, 07:23
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: problema de varios jinternalframe

Hola Ronruby, gracias por la respuesta, suena logico lo que planteas, ahora estoy tratando de procesarlo XD
te prenguto algunas cosas:

El metodo:
public static Map<String, JInternalFrame> ventanasAbiertas = new HashMap<String, JInternalFrame>();
¿lo crearias en la pantalla donde queres guardar la referencia a todas las pantallas?

El metodo:
NoSeQue.ventanasAbiertas.put("formularioNuevoUsuar io", new frmClase1());
¿que hace este medodo? ¿le paso solamente el nombre de la variable de la pantalla que quiero guardar?
¿que me guarda?

cuando hablas de liberar los recursos ineserarios hablas de usar un dispose()?

Cuando agrego esta linea, el compilado me da la sugerencia de implementar todos los metodos de la clase abstracta, si hago click en la sugerencia me aparecen estos metodos
frame.addInternalFrameListener(new InternalFrameListener() {

@Override
public void internalFrameOpened(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameClosing(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameClosed(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameIconified(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameDeiconified(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameActivated(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void internalFrameDeactivated(InternalFrameEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});

Última edición por javaDevep; 28/06/2012 a las 13:29
  #4 (permalink)  
Antiguo 28/06/2012, 14:08
 
Fecha de Ingreso: junio-2012
Ubicación: Posadas-Misiones
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: problema de varios jinternalframe

help helpp ! :(
  #5 (permalink)  
Antiguo 29/06/2012, 14:03
Avatar de Hiruma-Sama  
Fecha de Ingreso: agosto-2007
Ubicación: Floresta, Buenos Aires, Argentina.
Mensajes: 234
Antigüedad: 16 años, 8 meses
Puntos: 5
Respuesta: problema de varios jinternalframe

Lo que yo entiendo, es que el te sugiere que uses un Map, una lista, un contenedor de objetos, donde puedas almacenar las instancias de tus ventanas, tomo el ejemplo:

Cita:
class NoSeQue {
public static Map<String, JInternalFrame> ventanasAbiertas = new HashMap<String, JInternalFrame>();
}
luego en tu codigo, cuando vayas a crear una ventana, en cualquier parte, en lugar de crearla y ya, la creas y la agregas a ese mapa, vuelvo a utilizar el ejemplo que expusieron:

Cita:
//Luego en otra parte:
NoSeQue.ventanasAbiertas.put("formularioNuevoUsuar io", new frmClase1());

A partir de este momento, en el atributo ventanasAbiertas (de la clase 'NoSeQue') vos tendrías una lista con las referencias a las ventanas creadas, entonces, siempre desde cualquier parte que puedas pedir el atributo 'ventanasAbiertas', podrias pedir la instancia de una de tus ventanas.

Cita:
//Y para obtener la instancia:
NoSeQue.ventanasAbiertas.get("formularioNuevoUsuar io");
Lo importante es que entiendas la logica, luego lo aplicaras a tu código de la manera mas prolija posible.

Saludos.

Etiquetas: clase, jinternalframe
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 12:03.