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
|
class MyFrame extends JFrame {
Fan fan;
public MyFrame(Fan app) {
super("FullFantastic");
fan = app;
//On retire DISPOSE_ON_CLOSE, on va le gérer nous même.
//setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//Le this n'est pas utile car setDefaultCloseOperation est membre.
setContentPane(app);
}
//On abandonne la surdéfinition de dispose.
/*public void dispose() {
SaveDialog saveDialog = new SaveDialog(this);
saveDialog.setVisible(true);
super.dispose();
System.exit(0);
}*/
//Le fait de cliquer sur la croix appel setVisible avec false.
//On va donc le surdéfinir.
public void setVisible(boolean b) {
if ( !b ) {
//Ici le code de fermeture.
SaveDialog saveDialog = new SaveDialog(this);
saveDialog.setVisible(true);
//Ici tu test la réponse de dialogbox. moi je met res = true;
boolean res = true;
if ( res ) { //Oui on sauvegarde.
super.setVisible(false); //On cache la fenêtre
dispose(); // et on la détruit.
//Ici tu peux mettre le exit(1), mais c'est pas très propre.
// C'est plustot la classe appelante qui devrais le faire.
} else { //Non faut pas !!!
return; //Donc je ne fait rien.
//Donc ma fenêtre reste visible. J'ai annulé le clic sur la croix.
}
} else {
//J'autorise l'affichage de la fenêtre sans conditions.
super.setVisible(b);
}
}
} |