Bonjour,
Je rencontre un problème concernant la fermeture de mon programme. J'utilise l'interface WindowListener et la méthode windowClosing. A l'interieur de celle-ci, je crée un JOptionPane pour demander à l'utilisateur s'il souhaite quitter ou non. Si oui, je fais un System.exit(0) sinon un setDefaultCloseOperation JFrame.DO_NOTHING_ON_CLOSE).
Le problème est que lorsque j'utilise la souris ou la barre d'espace pour actionner les boutons cela fonctionne normalement mais dès lors que j'utilise le touche Entrée la fenêtre est fermée et l'application terminée dans tous les cas. (On obtient toujours n = 0 cf source)
Si quelqu'un a déjà rencontré ce problème...
Je vous remercie d'avance pour vos réponses.
Ci-joint le source:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Fenetre extends JFrame{
Container panneau;
// Constructeur
public Fenetre()
{
panneau = getContentPane();
setSize(500,500);
setVisible(true);
// Fermeture de la fenêtre
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
String[] options = {"Oui","Non"};
JLabel lMessage = new JLabel("Etes-vous sûr de vouloir quitter ?");
// Création d'un JOptionPane Oui - Non
int n = JOptionPane.showOptionDialog(new JFrame(),
lMessage,
"Quitter la fenêtre?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, // Pas d'icône utilisée
options, // Liste boutons
options[0]); // Bouton par défaut
// Si réponse Oui, on quitte.
if(n == 0)
{
System.out.println("n = " + n);
System.exit(0);
}
// Sinon.
else
{
System.out.println("n = " + n);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}
});
}
public static void main(String arg[])
{
new Fenetre();
}
}