Bonjour,
J'ai un JMenuItem qui est dans un JMenu, sur ce JMenuItem, il y a un actionListener. Lorsqu'on clique sur le JMenuItem une fenetre de confirmation doit s'ouvrir et demande la confirmation de fermeture. Cette fenetre de confirmation renvoye true ou false selon que l'utilisateur clique sur confirmer ou anuler, seulement ca ne marche qu'a moitié. L'appel à cette fenetre de confirmation se fait dans l'actionListener du JMenuItem donc quand on est dans la fenetre de confirmation l'actionListener ne s'execute plus vus que la souris n'est plus sur le JMenuItem. Par conséquent, pour sortir que programme, je doit réapuyer une seconde fois sur quitter, là la variable booléenne a déjà été initalisée et l'actionListener ferme le programme. Ma question est donc : comment éviter ceci ? le programme doit se fermer directement et le System.exit(0) ne peut pas etre dans la fenetre de confirmation vu qu'elle sert à d'autres choses que quitté le programme. Voici les morceaux de mon code correspondant.
Désolé pour la densité de la question j'ai fait le plus court possible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 JMenuItem quit = new JMenuItem("Quitter"); quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { //Comment forcer l'attente de la réponse ? aussi non, deux clic nécessaire if (InformationFrame.InformationFenetre("Etes-vous sur de vouloire quitter ?",currentLEtF)) System.exit(0); } }); menuPrinc.add(quit); return menuPrinc; //menuPrinc = 1 JMenu . . . //Dans la classe de la fenetre de confirmation JButton j = new JButton("Confirmer"); j.setBorderPainted(false); j.setSize(40,15); j.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { choix = true; f.dispose(); //est-ce que le f.dispose peut poser problème ? } } //puis un autre bouton "annuler" avec choix = false et à la fin on renvoie choix );![]()
Partager