[SOLUCIONADO]¿cómo detectar cuando se cierra un JInternalFrame?

Iniciado por kinos, 2 Junio 2010, 00:19 AM

0 Miembros y 1 Visitante están viendo este tema.

kinos

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?

Leyer

Código (java) [Seleccionar]
internalFrame.addInternalFrameListener(new InternalFrameListener() {
@Override
public void internalFrameClosing(InternalFrameEvent arg0) {}
@Override public void internalFrameOpened(InternalFrameEvent arg0)      {}
@Override public void internalFrameIconified(InternalFrameEvent arg0)   {}
@Override public void internalFrameDeiconified(InternalFrameEvent arg0) {}
@Override public void internalFrameDeactivated(InternalFrameEvent arg0) {}
@Override public void internalFrameClosed(InternalFrameEvent arg0)      {
//....
}
@Override public void internalFrameActivated(InternalFrameEvent arg0)   {}
});

sapito169

#2
primero tines que hacer que no haga nada a la hora de presionar la x


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


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


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();
        }
       
    } 

kinos

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.