Bonjour,
Je suis actuellement en train de faire un programme qui contient un menu avec une interface graphique. Le menu contient 2 boutons, "Quizz" et "Images" (qui correspondent à des "mini-jeux") qui lorsqu'on clique dessus, affichent 2 autres boutons, "Première" et "Terminale", qui à leur tour affichent 2 boutons "Oui" et "Non" quand on clique dessus. Mon problème est le suivant : lorsque je lance un des deux mini-jeux (par exemple en faisant "Quizz" > "Première" > "Oui"), une nouvelle fenêtre s'ouvre, et j'ai dessus un bouton "Menu" qui permet de revenir au début du menu précédemment cité. Mais une fois de retour sur ce menu, lorsque je suis la même démarche pour lancer le mini-jeu "Images", les deux mini-jeux s'ouvrent alors que seul "Images" devrait s'ouvrir. Je ne sais pas à quoi c'est dû, mais je vous mets le code (j'ai laissé seulement les parties concernées, sinon c'est trop long ) :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
public class programme {  
 
    static JFrame fenetre = new JFrame("NOMENCLATURE");  
 
    static JButton bouton1 = new JButton("QUIZZ");  
    //etc... création des boutons, etc...  
 
    public static void main(String[] args){    
 
        bouton1.setSize(500,100);  //bouton1 correspond au bouton "Quizz"
        bouton1.addActionListener(new quizz());  
 
        bouton2.setSize(500,100);  
        bouton2.addActionListener(new images());   // et bouton2 correspond au bouton "Images"
 
        quitter.setSize(150,150);  
        quitter.addActionListener(new quitter());  
 
        oui.setSize(500,100);   
 
        non.setSize(500,100);  
        non.addActionListener(new reset());  //le bouton non sert à revenir au début du menu lorsqu'on est encore dedans
 
        info.setSize(150,150);  
        info.addActionListener(new info());  
 
        credits.setSize(150,150);  
        credits.addActionListener(new credits());  
 
        pane.setLayout(new FlowLayout());  
        pane.add(credits);  
        //etc... on ajoute les différents élements au JPanel...  
 
 
            if(activite.equals("QUIZZ")){  
                bouton1.addActionListener(new premiere());  
                bouton2.addActionListener(new terminale());  
            }  
            if(activite.equals("IMAGES")){  
                bouton1.addActionListener(new premiere());  
                bouton2.addActionListener(new terminale());  
            }  
        }  
    }  
    public static class quizz implements ActionListener {   // à partir de là, tous les ActionListener de chaque bouton
 
        public void actionPerformed(ActionEvent e){  
            if(activite.equals("activite")){  
                oui.addActionListener(new Question()); 
                labelX=230; 
                image.setIcon(new ImageIcon("images/fond/fond2.jpg")); 
                activite="QUIZZ";  
                classe="classe";  
                pane.remove(info);  
                pane.remove(credits);  
                bouton1.setText("PREMIERE");  
                bouton2.setText("TERMINALE");  
                text2.setText("VOUS AVEZ CHOISI "+activite+" CHOSISSEZ UNE CLASSE");  
 
            }  
 
        }  
 
    }  
    public static class images implements ActionListener {  
 
        public void actionPerformed(ActionEvent e){  
            if(activite.equals("activite")){  
                oui.addActionListener(new Test()); 
                labelX=230; 
                image.setIcon(new ImageIcon("images/fond/fond2.jpg")); 
                activite="IMAGES";  
                classe="classe";  
                pane.remove(info);  
                pane.remove(credits);  
                bouton1.setText("PREMIERE");  
                bouton2.setText("TERMINALE");  
                text2.setText("VOUS AVEZ CHOISI "+activite+" CHOSISSEZ UNE CLASSE");  
            }  
        }  
 
    }  
    public static class premiere implements ActionListener {  
 
        public void actionPerformed(ActionEvent e){  
            if(classe.equals("classe")){ 
                labelX=320; 
                labelY=(fenetreY/2); 
                image.setIcon(new ImageIcon("images/fond/fond3.jpg")); 
                placementY=200;  
                classe="PREMIERE";  
                image.setHorizontalAlignment(JLabel.CENTER);  
                image.setVerticalAlignment(JLabel.CENTER);  
                pane.add(oui);  
                pane.add(non);  
                pane.remove(bouton1);  
                pane.remove(bouton2);  
                text2.setText("VOUS AVEZ CHOISI "+activite+" POUR LES ELEVES DE "+classe);  
                pane.add(image);  
            }  
        }  
    }  
    public static class terminale implements ActionListener {  
 
        public void actionPerformed(ActionEvent e){  
            if(classe.equals("classe")){ 
                labelX=320; 
                labelY=(fenetreY/2); 
                image.setIcon(new ImageIcon("images/fond/fond3.jpg")); 
                placementY=200;  
                classe="TERMINALE";  
                image.setHorizontalAlignment(JLabel.CENTER);  
                image.setVerticalAlignment(JLabel.CENTER);  
                pane.add(oui);  
                pane.add(non);  
                pane.remove(bouton1);  
                pane.remove(bouton2);  
                text2.setText("VOUS AVEZ CHOISI "+activite+" POUR LES ELEVES DE "+classe);  
                pane.add(image);  
            }  
        }  
    }  
    public static class reset implements ActionListener{  
 
        public void actionPerformed(ActionEvent e){  
            placementY=75;  
            labelX=150; 
            labelY=0; 
 
            oui.removeActionListener(new Test());
            oui.removeActionListener(new Question());
 
 
            pane.remove(oui);  
            pane.remove(non);  
            pane.add(bouton1);  
            pane.add(bouton2);  
            pane.add(image);  
 
            quitter.setLocation(((fenetreX/2)-placementX),((fenetreY/2)+placementY));  
 
            image.setHorizontalAlignment(JLabel.CENTER);  
            image.setVerticalAlignment(JLabel.TOP);  
            text2.setText("CHOISISEZ UNE ACTIVITE");  
 
            bouton1.setText("QUIZZ");  
            bouton2.setText("IMAGES");  
 
            activite="activite";  
            classe="rien";  
        }  
 
    }  
        public static class Test implements ActionListener {  
        public void actionPerformed (ActionEvent e){  
            fenetre.dispose();  
            new Fenetre();          // lance le mini-jeu "Images"
        }  
    } 
    public static class Question implements ActionListener{ 
        public void actionPerformed(ActionEvent e){ 
            fenetre.dispose();
            new quizz2();   //lance le mini-jeu "Quizz"
 
        } 
    }
	public static String classe() {
		return classe;
	}
	public static JFrame fenetre() {
		return fenetre;
	}
	public static void retourMenu() {    // la méthode appelée par les deux mini-jeux pour revenir au menu principal
		placementY=75;  
        labelX=150; 
        labelY=0; 
 
        oui.removeActionListener(new Test());
        oui.removeActionListener(new Question());
 
        pane.remove(oui);  
        pane.remove(non);  
        pane.add(bouton1);  
        pane.add(bouton2);  
        pane.add(image);  
 
        quitter.setLocation(((fenetreX/2)-placementX),((fenetreY/2)+placementY));  
 
        image.setHorizontalAlignment(JLabel.CENTER);  
        image.setVerticalAlignment(JLabel.TOP);  
        text2.setText("CHOISISEZ UNE ACTIVITE");  
 
        bouton1.setText("QUIZZ");  
        bouton2.setText("IMAGES");  
 
        activite="activite";  
        classe="rien";
	}
Et surtout voici le code de l'un des deux mini-jeux, le mini-jeu "Quizz" qui se situe dans une classe à part :
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
33
34
35
36
37
38
39
40
41
42
43
public class quizz2{
	private static JFrame quizz = new JFrame();
	// création des boutons, etc...
 
	private JPanel container = new JPanel();
 
	private String classe = programme.classe();
 
	private static JFrame fenetre = programme.fenetre();    //le JFrame qui permet le retour au menu
 
 
	public quizz2 (){
		init();
	}
	private void init(){
 
		quizz.setSize(fenetreX,fenetreY);
		//etc... je vous passe le blabla...					
 
		quitter.addActionListener(new quitter());
		menu.addActionListener(new menu());
 
		container.setLayout(new FlowLayout());
		container.add(quitter);
		//etc... on ajoute tous les boutons...
 
	}
	public static class quitter implements ActionListener { 
 
		public void actionPerformed(ActionEvent e){ 
			System.exit(0); 
		}
	}
	public static class menu implements ActionListener { 
 
		public void actionPerformed(ActionEvent e){ 
			quizz.dispose();
			fenetre.setVisible(true);
			programme.retourMenu(); //appel de la méthode retourMenu de la classe principale
		}
	}
		}
}
J'ai conscience que le code est lourd mais j'ai essayé d'enlever un maximum de choses inutiles possible pour ne laisser que les choses essentielles.
Surtout si vous voulez une quelconque précision, des screens ou autre je les apporterais bien sûr.
Merci beaucoup de votre aide.
EDIT : le problème vient probablement des .addActionListener, le reste du code est inutile, mais je ne vois pas d'où cela vient exactement.