//
Squelette de fenêtre awt en Java
/* SquelF.java squelette de fenêtre et bouton quitter (AWT uniquement)
un exemple avec 'implements WindowListener'
fenêtre (géomètre: BorderLayout)
au Nord, un panneau (contenant deux boutons)
fermeture de la fenêtre surveillée (cf.
adapter btn, txt_btn, cpt_btn, reflexe_btn, Robot_btn
*/
import java.awt.event.*;
import java.awt.*;
public class SquelF extends Frame {
Button btn, quitter;
String txt_btn="Appui "; int cpt_btn;
public SquelF() {
cpt_btn=0;
try { dessineFen(); }
catch (Exception e) { e.printStackTrace(); }
}
/** Dessiner la fenêtre principale */
private void dessineFen() throws Exception {
Panel panBouts = new Panel();
// Pannau du haut avec deux boutons côte à côte
btn = new Button(txt_btn+cpt_btn);
quitter = pourQuitter("Quitter");
panBouts.add(btn); panBouts.add(quitter);
// Titre et géomètre de la fenêtre principale
this.setTitle("Dans la barre supérieure: SquelF");
this.setLayout(new BorderLayout());
this.add(panBouts,BorderLayout.CENTER);
// Traitement des événements
Robot_btn capteur = new Robot_btn(this);
btn.addActionListener(capteur);
}
// Ajouter 1 au compteur et changer l'étiquette
void reflexe_btn() {
cpt_btn++;
btn.setLabel(txt_btn+cpt_btn);
}
/** Construit un bouton et met en place deux réflexes (quitter par
* un bouton ou par le gestionnaire de fenêtres) qui appellent
* la méthode quitterFen()
*/
Button pourQuitter(String ch) {
// Pour quitter par le bouton
Button quit = new Button(ch);
quit.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent evt) { quitterFen(); }
});
// Pour quitter par l'encadrement (gestionnaire de fenêtres)
WindowAdapter pf = new WindowAdapter() {
public void windowClosing(WindowEvent e) { quitterFen(); };
};
this.addWindowListener(pf);
return quit;
}
/** Surveille, si nécessaire, la fermeture de la fenêtre
(adapter suivant les besoins)
*/
void quitterFen() { System.exit(0); }
public static void main(String[] args) {
SquelF fen = new SquelF();
fen.setSize(new Dimension(200, 300));
fen.setVisible(true);
}
} // fin class SquelF
// Réaction à l'appui sur le bouton
class Robot_btn implements ActionListener {
SquelF fen;
Robot_btn(SquelF f) { fen = f; }
public void actionPerformed(ActionEvent e) {fen.reflexe_btn();}
}
/* Les méthodes de l'interface WindowListener
class IWL implements WindowListener {
Frame cadre;
IWL(IHM2 c) { Frame = c; }
public void windowOpened( WindowEvent ev ) {
System.out.println("windowOpened");
}
public void windowActivated( WindowEvent ev ) {
System.out.println("windowActivated");
}
public void windowDeactivated( WindowEvent ev ) {
System.out.println("windowDeactivated");
}
public void windowDeiconified( WindowEvent ev ) {
System.out.println("windowDeiconified");
}
public void windowIconified( WindowEvent ev ) {
System.out.println("windowIconified");
}
public void windowClosed( WindowEvent ev ) {
System.out.println("windowClose");
}
public void windowClosing( WindowEvent ev ) {
cadre.fermer();
}
}
*/
// fin SquelF.java