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

Abrir una sola vez JinternalFrame

Estas en el tema de Abrir una sola vez JinternalFrame en el foro de Java en Foros del Web. Como evitar que se abra JinternalFrame 2 a mas veces. E intentado pero no me funciona. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original try {   ...
  #1 (permalink)  
Antiguo 21/11/2015, 13:37
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Abrir una sola vez JinternalFrame

Como evitar que se abra JinternalFrame 2 a mas veces.

E intentado pero no me funciona.

Código Java:
Ver original
  1. try{            
  2.             BuscadorArticulo ba = new BuscadorArticulo();
  3.             if(ba.isShowing())
  4.             {
  5.                 JOptionPane.showMessageDialog(null,"Ya Esta abierto!", "Advertencia", JOptionPane.ERROR_MESSAGE);
  6.             }else{
  7.                     escritorio2.add(ba);
  8.                     Dimension desktopSize = escritorio2.getSize();
  9.                     Dimension FrameSize = ba.getSize();
  10.                     ba.setLocation((desktopSize.width - FrameSize.width)/2, (desktopSize.height- FrameSize.height)/2);
  11.                     ba.show();
  12.                   }
  13.        } catch (Exception ex) {
  14.                 Logger.getLogger(Ventas.class.getName()).log(Level.SEVERE, null, ex);
  15.       }

Este otro no me funciona bien por que la ventana "ba" ya no se actualiza, se queda con los mismos datos
Código Java:
Ver original
  1. BuscadorArticulo ba = new BuscadorArticulo();
  2.     public void MostrarBucador(){
  3.         try{            
  4.            
  5.             if(ba.isShowing())
  6.             {
  7.                 JOptionPane.showMessageDialog(null,"Ya Esta Habilitado!", "Advertencia", JOptionPane.ERROR_MESSAGE);
  8.             }else{
  9.                     escritorio2.add(ba);
  10.                     Dimension desktopSize = escritorio2.getSize();
  11.                     Dimension FrameSize = ba.getSize();
  12.                     ba.setLocation((desktopSize.width - FrameSize.width)/2, (desktopSize.height- FrameSize.height)/2);
  13.                     ba.show();
  14.                   }
  15.        } catch (Exception ex) {
  16.                 Logger.getLogger(Ventas.class.getName()).log(Level.SEVERE, null, ex);
  17.       }
  18.        
  19.     }

Quiero que se abra una sola vez
__________________
Muy Feliz

Última edición por soy_nicanor; 21/11/2015 a las 13:50
  #2 (permalink)  
Antiguo 23/11/2015, 13:26
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Abrir una sola vez JinternalFrame

Buenas,

Código Java:
Ver original
  1. BuscadorArticulo ba = new BuscadorArticulo();
  2.             if(ba.isShowing())

Si acabas de crear una instancia BuscadorArticulo, el valor de isShowing siempre sera falso.
Tienes que guardar la referencia a la instancia a nivel global, por ejempo como propiedad del JFrame principal.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 25/04/2016, 09:04
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Abrir una sola vez JinternalFrame

o como controlaría desde el menuItem si esta abierto que se deshabilite si esta cerrado que se habilite
__________________
Muy Feliz
  #4 (permalink)  
Antiguo 25/04/2016, 11:38
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 2 meses
Puntos: 11
Respuesta: Abrir una sola vez JinternalFrame

Haz una clase que herede de JinternalFrame y le aplicas el patrón de diseño singleton. Con esto solo se creara una sola vez.

Etiquetas: jinternalframe, vez
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 09:32.