web-dev-qa-db-fra.com

Écouteur / événement de fermeture de fenêtre AWT

Je suis désolé s'il s'agit d'une question n00b, mais j'ai passé way trop longtemps pour cela une fois que j'ai créé l'écouteur de fenêtre, l'événement window et tout le reste, comment spécifier la méthode à invoquer? Voici mon code:

private static void mw() {
    Frame frm = new Frame("Hello Java");
    WindowEvent we = new WindowEvent(frm, WindowEvent.WINDOW_CLOSED);
    WindowListener wl = null;
    wl.windowClosed(we);
    frm.addWindowListener(wl);
    TextField tf = new TextField(80);
    frm.add(tf);
    frm.pack();
    frm.setVisible(true);

}

J'essaie d'obtenir une URL et de la télécharger, j'ai tout réglé, j'essaie simplement de fermer la fenêtre.

21
alexmherrmann

Window closing method

import Java.awt.*;
import Java.awt.event.*;
import javax.swing.*;

class FrameByeBye {

    // The method we wish to call on exit.
    public static void showDialog(Component c) {
        JOptionPane.showMessageDialog(c, "Bye Bye!");
    }

    public static void main(String[] args) {
        // creating/udpating Swing GUIs must be done on the EDT.
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {

                final JFrame f = new JFrame("Say Bye Bye!");
                // Swing's default behavior for JFrames is to hide them.
                f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                f.addWindowListener( new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent we) {
                        showDialog(f);
                        System.exit(0);
                    }
                } );
                f.setSize(300,200);
                f.setLocationByPlatform(true);
                f.setVisible(true);

            }
        });
    }
}

Examinez également Runtime.addShutdownHook(Thread) pour toute action vitale à effectuer avant l'arrêt.

AWT

Voici une version AWT de ce code.

import Java.awt.*;
import Java.awt.event.*;

class FrameByeBye {

    // The method we wish to call on exit.
    public static void showMessage() {
        System.out.println("Bye Bye!");
    }

    public static void main(String[] args) {
        Frame f = new Frame("Say Bye Bye!");
        f.addWindowListener( new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {
                showMessage();
                System.exit(0);
            }
        } );
        f.setSize(300,200);
        f.setLocationByPlatform(true);
        f.setVisible(true);
    }
}
31
Andrew Thompson

Cette exemple montre comment utiliser addWindowListener() avec WindowAdapter , une implémentation concrète de WindowListener interface. Voir aussi, Comment écrire des écouteurs de fenêtre .

4
trashgod