J'ai une interface graphique simple:
public class MyGUI extends JFrame{
public MyGUI(){
run();
}
void run(){
setSize(100, 100);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe an action listener here
}
}
Je voudrais imprimer ce message:
System.out.println("Closed");
Lorsque l'interface graphique est fermée (lorsque vous appuyez sur X). Comment puis je faire ça?
Essaye ça.
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.out.println("Closed");
e.getWindow().dispose();
}
});
Ecrivez ce code dans le constructeur de votre JFrame :
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new Java.awt.event.WindowAdapter() {
@Override
public void windowClosing(Java.awt.event.WindowEvent e) {
System.out.println("Uncomment following to open another window!");
//MainPage m = new MainPage();
//m.setVisible(true);
e.getWindow().dispose();
System.out.println("JFrame Closed!");
}
});
Une autre possibilité pourrait être de remplacer dispose()
à partir de la classe Window
. Cela réduit le nombre de messages envoyés et fonctionne également si l'opération de fermeture par défaut est définie sur DISPOSE_ON_CLOSE
.
Concrètement, cela signifie ajouter
@Override
public void dispose() {
System.out.println("Closed");
super.dispose();
}
à votre classe MyGUI
.
Remarque: n'oubliez pas d'appeler super.dispose()
car cela libère les ressources d'écran!