Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kinos en 2 Junio 2010, 00:19 am



Título: [SOLUCIONADO]¿cómo detectar cuando se cierra un JInternalFrame?
Publicado por: kinos en 2 Junio 2010, 00:19 am
Hola:

   ¿Cómo puedo detectar cuando se cierra un JInternalFrame con la X de arriba?

   Quiero hacer lo típico de cuando cierras un documento que te pregunte si quieres guardar los cambios, ¿esa ventanita sería un jDialog?


Título: Re: ¿cómo detectar cuando se cierra un JInternalFrame?
Publicado por: Leyer en 2 Junio 2010, 00:47 am
Código
  1. internalFrame.addInternalFrameListener(new InternalFrameListener() {
  2. @Override
  3. public void internalFrameClosing(InternalFrameEvent arg0) {}
  4. @Override public void internalFrameOpened(InternalFrameEvent arg0)      {}
  5. @Override public void internalFrameIconified(InternalFrameEvent arg0)   {}
  6. @Override public void internalFrameDeiconified(InternalFrameEvent arg0) {}
  7. @Override public void internalFrameDeactivated(InternalFrameEvent arg0) {}
  8. @Override public void internalFrameClosed(InternalFrameEvent arg0)      {
  9. //....
  10. }
  11. @Override public void internalFrameActivated(InternalFrameEvent arg0)   {}
  12. });


Título: Re: ¿cómo detectar cuando se cierra un JInternalFrame?
Publicado por: sapito169 en 2 Junio 2010, 00:58 am
primero tines que hacer que no haga nada a la hora de presionar la x

Código:
 jInternalFrame1.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);


luego tienes que agregarle un listener para que este atento a la hora de cerrar el programa

Código:
jInternalFrame1.addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
                jInternalFrame1InternalFrameClosing(evt);
            }
            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });


no te preocupes por lo horriblemente largo que se ve igual el ide te autogenera todo el codigo

y finalmente para que poner terminar

Código:
private void jInternalFrame1InternalFrameClosing(javax.swing.event.InternalFrameEvent evt) {                                                     
        int opcion = JOptionPane.showConfirmDialog(this, "desea guardar", "mi titulo", JOptionPane.YES_NO_OPTION);
        if (opcion == JOptionPane.YES_OPTION) {
            guardaInformacion();
            jInternalFrame1.dispose();
        }
       
    } 


Título: Re: ¿cómo detectar cuando se cierra un JInternalFrame?
Publicado por: kinos en 2 Junio 2010, 01:13 am
ok. Ya entiendo, con el InternalFrameListener.

jeje... llevaba tanto tiempo sin tocar las ventanitas que no me acordaba ya de que el ide te generaba el codigo  :silbar:

gracias.