Bonjour à tous !
Je suis face à un problème curieux.
J'ai deux classes : Interface et Assistant.
La classe Interface crée une instance unique de la classe Assistant (singleton) et l'affiche dans un JDialog :
Tout fonctionne bien jusque là, l'assistant se lance et je peux y naviguer, mais lorsque je clique sur un bouton qui est censé masquer l'assistant et créer un objet d'une autre classe, tout se bloque, il n'y a pas d'erreur, mais le bouton reste enfoncé sans produire la moindre action.
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 private static Interface i; private static Assistant a; private Interface extends JFrame { //... dial = new JDialog(this, "titre", true); dial.add(getInstanceAssistant()); //... } public synchronized static Assistant getInstanceAssistant() { if (a == null) { a = new Assistant(); } return a; } public synchronized static Interface getInstanceInterface() { if (i == null) { i = new Interface(); } return i; }
J'ai mis quelques points de tests dans le code source de la méthode appelée lors du clic sur le bouton (dans la classe Assistant) :
Il se trouve que seul "test1" s'affiche dans la console de NetBeans... Voici à tout hasard la méthode meth() dans la classe Interface :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void btnMouseReleased(java.awt.event.MouseEvent evt) { //... System.out.println("test1"); Interface i = Interface.getInstanceInterface(); System.out.println("test2"); i.meth(); }
D'où peut bien venir ce problème ? Pourquoi ne puis-je pas récupérer l'unique instance de Interface dans la classe Assistant ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void meth() { a.setVisible(false); //... }
Merci d'avance !
Axel
Partager