windowClosing

boas!

windowClosing é acionada quando pressiono o “X” da janela.

Mas quando crio um botao que aciona o código:
setVisible(false);
dispose();

windowClosing não é acionada.

Tem algum jeito de fazer windowClosing ser acionada?

obrigado

Voce pode postar o menor trecho de codigo possivel que reproduza o problema? Sua descricao nao ficou bem clara.

Segue o fonte criado com o NetBeans 4.1: um JFrame com um JButton

[code]
/*

  • NewJFrame.java
  • Created on June 14, 2005, 9:36 PM
    */

/**
*

  • @author horita
    */
    public class NewJFrame extends javax.swing.JFrame {

    public int dummy = 0;

    /** Creates new form NewJFrame */
    public NewJFrame() {
    initComponents();
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {
      jButton1 = new javax.swing.JButton();

      getContentPane().setLayout(null);

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      addWindowListener(new java.awt.event.WindowAdapter() {
      public void windowClosing(java.awt.event.WindowEvent evt) {
      formWindowClosing(evt);
      }
      });

      jButton1.setMnemonic(‘F’);
      jButton1.setText(“Fechar”);
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
      }
      });

      getContentPane().add(jButton1);
      jButton1.setBounds(90, 120, 130, 60);

      java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
      setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400, 300);
      }
      //

    private void formWindowClosing(java.awt.event.WindowEvent evt) {
    System.out.println(“passei por aqui…”);
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    setVisible(false);
    dispose();
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new NewJFrame().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    // End of variables declaration

}

desculpem pela “formatacao” do codigo…

Gostaria que formWindowClosing fosse acionada automaticamente sempre que fecho a janela.

Se pressiono o “X” ou ALT-F4, a janela fecha e eu tenho “passei por aqui…” na console pois a função:

private void formWindowClosing(java.awt.event.WindowEvent evt) {
System.out.println(“passei por aqui…”);
}

está sendo acionada.

Se eu pressiono o botao:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
dispose();
}

a janela fecha mas eu não tenho “passei por aqui…” na console

Na realidade, em minha aplicação, o botão é um conjunto de botões em um JavaBean que eu gostaria que tivessem funções pré definidas e um deles comandaria o fechamento das janelas que em suas WindowClosing fariam a limpeza da casa e outras operações que se fizessem necessárias.

Não que eu tenha lido seu código… é muito grande…
Mas, se não me engano, vc quer que, ao clicar em um botão, por exemplo, disparar o windowClosing()

Seria isso???