Exemplo da Interface WindowListener

3 respostas
Matchola

Bom galera,
Eu gostaria que vocês me dessem um exemplo de como
usar a Interface WindowListener ou então mandassem o
link do exemplo. Por Favor tentem mandar o código do
exemplo comentado e o mais simples possível para que
eu possa entender melhor.

Obrigado a quem poder ajudar.

3 Respostas

Lavieri

ele funciona pra monitorar uma janela.... segue ai um exemplo pratico...

/*
 * AppTeste.java
 *
 * Created on 21/03/2009, 18:13:23
 */

package ajudaforum;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;

/**
 *
 * @author Tomaz
 */
public class AppTeste extends javax.swing.JFrame {

    /** Creates new form AppTeste */
    public AppTeste() {
        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.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                javax.swing.JFrame frame = new AppTeste();

                //Aqui estou adcionando um espião a janela AppTeste() a minha classe BBW
                frame.addWindowListener(new BigBrotherWindow());

                //quando agente setVisible, quem tiver de listner, ou seja
                //escutando, sera chamado através do método windowOpened(WindowEvent e)
                frame.setVisible(true);
            }
        });
    }

    /**
     * WindowsAdapter, é uma classe que implementa WindowsListner, onde todos os
     * método são em branco, é util quando só se quer monitorar algumas coisas
     * da Janela, no nosso caso, estamos moniturando a abertura, o fechamento,
     * e quando a janela é minimizada...
     */
    private static class BigBrotherWindow extends WindowAdapter {
        private boolean minimizado = false;

        public void windowOpened(WindowEvent e) {
            System.out.println("A janela abriu!!! estamos espiado!" +e.getSource().getClass().getSimpleName());
            System.out.println("O estado antigo era :" + e.getOldState());
            System.out.println("O novo estado é :"+e.getNewState());
            System.out.println("Continue espiando!!! BIG BROTHER WIDOWS! vc não perde por espiar");
        }

        public void windowClosing(WindowEvent e) {
            if (!minimizado) {
                JOptionPane.showMessageDialog(e.getWindow(), "Antes de fechar, vc precisa minizar a janela 1 vez");
                
                //aqui to gerando um erro, pra não deichar a janela fechar
                throw new RuntimeException("Antes de fechar, vc precisa minizar a janela 1 vez");
            } else
                System.out.println("agora fechou!");
        }

        public void windowIconified(WindowEvent e) {
            minimizado = true;
            JOptionPane.showMessageDialog(e.getWindow(), "Minimzando a janela ?? estamos de olho!");
        }

    }

    // Variables declaration - do not modify
    // End of variables declaration

}

sempre que ocorre um dos eventos descritos na escuta, ele chama os Listners através do método pre definido... informando assim que o evento esta acontecendo...

Lavieri

alguma instruções… copie o código pra sua IDE… rode ele…

leia o console quando a janela abrir… em seguida… clique no botão de FECHAR da janela… veja a msg que aparece, depois minimize, veja o que acontece… depois tente fechar novamente, veja que agora funciona… e veja as msgs do console… abraços!..

tiver duvida avisa

Matchola

Ótimo exemplo Lavieri,
Muito Obrigado vai ser de grande ajuda.

Criado 21 de março de 2009
Ultima resposta 21 de mar. de 2009
Respostas 3
Participantes 2