La commande System.exit(0) ferme tout ce qui concerne l'application en cours.
Personnellement, je travaille de la manière suivante (elle vaut ce qu'elle vaut mais ça marche pas trop mal).
Une classe "main" qui lance l'application, la vue, les différentes param.
Une classe de type JFrame avec un JMenuBar, cette vue principale est initiée par la classe main.
A partir de là créer différentes JFrame filles qui sont affichées à la demande et lorsque elle ne servent plus, rendu invisibles par la commande setVisible(false). Chaque JFrame fille connait la JFrame principale et inversement. De cette manière, l'ouverture ou la fermeture des différentes vues sont initiées à partir de la vue principale (à partir du JMenubar par ex). De plus, la fermeture d'un JFrame fille ne stoppera pas l'application, étant indépendante.
Même principe, si la JFrame principale ne doit plus être affichée, utiliser setVisible(false), mais bon c'est parfois dangereux si on prévoit pas un retour à l'état original.
petit exemple:
à partir de la Frame principale, initialisation d'une frame fille.
private ConsoleFrame consoleFrame;
//affiche la JFrame fille
public void setConsoleView(){
consoleFrame = Console.getInstance();
consoleFrame.setMother(this);
consoleFrame.show();
}
public void removeConsoleFrame(){
consoleFrame = null;
}
//Vue à partir de la JFrame fille, pour fermer la fenêtre.
// dans le constructeur de la Frame.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
exitForm();
}
}
);
private void exitForm() {
if(JOptionPane.showConfirmDialog(null,"Do you really want to close the Console?","Question",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE)==0){
this.setVisible(false);
mother.removeConsoleView();
}
}
bonne chance
uboot