// MODULE: Fenetres.java // AUTEUR: felipe // OBJET: les fenetres (Frame) en Java ... // COMMENT: ou comment fermer proprement une fenetre import java.awt.*; import java.awt.event.*; // ----------------------------------------------------- // une premiere version qui ne marche pas vraiment... // lorsque l'on souhaite la fermer en utilisant les // icones classiques // ----------------------------------------------------- class Fenetre1 extends Frame { // ne fait que definir une taille et un titre public Fenetre1 (int largeur,int hauteur) { setTitle("Premiere version: Fenetre 1"); setSize(largeur,hauteur); } } // ----------------------------------------------------- // une deuxieme version qui gere proprement la fermeture // ----------------------------------------------------- class Fenetre2 extends Frame implements WindowListener{ public Fenetre2 (int largeur,int hauteur) { setTitle("Deuxieme version: Fenetre 2"); setSize(largeur,hauteur); addWindowListener(this); } public void windowClosing (WindowEvent e) {System.exit(0);} public void windowClosed (WindowEvent e) {} public void windowIconified (WindowEvent e) {} public void windowOpened (WindowEvent e) {} public void windowDeiconified (WindowEvent e) {} public void windowActivated (WindowEvent e) {} public void windowDeactivated (WindowEvent e) {} } // ----------------------------------------------------- // une troisieme version qui gere proprement la fermeture // mais sans l'inconvenient d'avoir a redefinir toutes les // methodes de l'interface WindowListener // ----------------------------------------------------- // juste une classe qui redefini l'action a executer si // la fermeture d'une fenetre est demandee class Fenetre3Adapter extends WindowAdapter { public void windowClosing (WindowEvent e) {System.exit(0);} } class Fenetre3 extends Frame { public Fenetre3 (int largeur,int hauteur) { Fenetre3Adapter adapter = new Fenetre3Adapter(); setTitle("Troisieme version: Fenetre 3"); setSize(largeur,hauteur); addWindowListener(adapter); // objet qui gere les evenements fenetre } public void windowClosing (WindowEvent e) {System.exit(0);} } // ----------------------------------------------------- // une derniere version qui gere proprement la fermeture // mais avec un code encore plus compact // ----------------------------------------------------- class FenetreFermante extends Frame { public FenetreFermante (int largeur,int hauteur) { // juste pour montrer l'usage de getClass().getName() setTitle("Quatrieme version:" + getClass().getName()); setSize(largeur,hauteur); addWindowListener(new WindowAdapter () { public void windowClosing (WindowEvent e) {System.exit(0);} } ); } }