1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| public class DemoWindowEvent {
public static void main(String[] args) {
JFrame frame = new JFrame("Démo");
// on ne peut supprimer le bouton de fermeture : on peut simplement dire qu'il ne fait rien d'autre
// que produire l'évenement
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// on enregistre un écouteur d'évenements
frame.addWindowListener(new WindowAdapter() {
/*
* Cette méthode traite les évenements produits par le bouton de fermeture de la fenêtre
*/
@Override
public void windowClosing(WindowEvent e) {
// l'action du le bouton de fermeture ne fera rien d'autre que le code de cette méthode
closeIfConfirmed(frame);
}
/**
* Cette méthode traite les évenements produits lorsque la fenêtre est fermée
*/
@Override
public void windowClosed(WindowEvent e) {
JOptionPane.showMessageDialog(null, "Fermée !");
}
});
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0);
JButton fermerButton1 = new JButton("Fermer directement");
fermerButton1.addActionListener(e-> frame.dispose());
panel.add(fermerButton1, gbc);
JButton fermerButton2 = new JButton("Fermer comme bouton fenêtre");
fermerButton2.addActionListener(e-> closeIfConfirmed(frame));
panel.add(fermerButton2, gbc);
frame.setContentPane(panel);
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
protected static void closeIfConfirmed(JFrame frame) {
if( JOptionPane.showConfirmDialog(frame,
"Voulez-vous vraiment fermer la fenêtre ?",
"Fermeture",
JOptionPane.OK_CANCEL_OPTION)==JOptionPane.OK_OPTION ) {
// alors je ferme la fenêtre
frame.dispose();
}
}
} |
Partager