Bonjour à tous et merci par avance pour votre aide.
Mon problème concerne le rafraichissement d'un JPanel.
En résumé, dans le code que je vous joins à mon message, vous pourrez voir que je crée un JPanel, sur lequel j'ajoute d'autres JPanel, en fonction du choix de l'utilisateur. Le problème étant que lorsque je reviens en arrière sur mon panel principal, je remarque que les éléments sont dupliqués, ce qui est assez gênant. En effet, ce problème ne se voit pas graphiquement, car les fenêtres se superposent. Mais lorsque j'affiche du texte par exemple, vous remarquerez que celui-ci s'affiche plusieurs fois.
J'ai tout tenté pour essayer de résoudre ce problème, mais rien n'y fait... Le problème doit sans doute venir de la "suppression des composants"...

Merci pour votre aide!
Bonne soirée.


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
package vue;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.*;
 
import vue.GestionProblemes.ChoixMenu;
 
public class Test extends JFrame {
 
	JPanel panGeneral = new JPanel();
	JPanel panIntro = new JPanel(new GridLayout(5, 1));
	JPanel panTest1 = new JPanel(new GridLayout(5, 1));
	JPanel panTest2 = new JPanel(new GridLayout(5, 1));
	JButton bouton1 = new JButton("Fenetre1");
	JButton bouton2 = new JButton("Fenetre2");
	JButton bouton3 = new JButton("Fenetre2");
	JButton boutonRetour1 = new JButton("Retour");
	JButton boutonRetour2 = new JButton("Retour");
 
	public Test () {
	    //On définit un titre
        this.setTitle("Test");
        //On définit la taille
        this.setSize(600, 400);
        //On centre la fenetre
        this.setLocationRelativeTo(null);
        //On active la croix
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        panGeneral.setBackground(Color.WHITE);
        panGeneral.setSize(600, 400);
        FenetrePrincipale();
 
        this.getContentPane().add(panGeneral);
 
        //On affiche la fenetre    
        this.setVisible(true);
	}
 
	public void FenetrePrincipale() {
		panGeneral.setVisible(false);
		panGeneral.removeAll();
		panIntro.removeAll();
		panTest1.removeAll();
		panTest2.removeAll();
 
		panIntro.setBackground(Color.WHITE);
 
        JLabel test = new JLabel("Test - fenetre principale",JLabel.CENTER);
        panIntro.add(test);
 
        bouton1.addActionListener(new ChoixMenu());
        bouton2.addActionListener(new ChoixMenu());
 
        panIntro.add(bouton1);
        panIntro.add(bouton2);
        System.out.println("Je suis dans la fenetre principale.");
 
 
        panGeneral.add(panIntro);
        panGeneral.setVisible(true);
	}
 
	public void Fenetre1() {
		panGeneral.setVisible(false);
		panGeneral.removeAll();
		panIntro.removeAll();
		panTest1.removeAll();
		panTest2.removeAll();
 
        panTest1.setBackground(Color.WHITE);
 
        JLabel test2 = new JLabel("Test - fenetre 1",JLabel.CENTER);
        panTest1.add(test2);
 
        bouton3.addActionListener(new ChoixMenu2());
        boutonRetour1.addActionListener(new ChoixMenu2());
 
        panTest1.add(bouton3);
        panTest1.add(boutonRetour1);
        System.out.println("Je suis dans la fenetre 1.");
 
 
		panGeneral.add(panTest1);
		panGeneral.setVisible(true);
	}
 
 
	public void Fenetre2() {
		panGeneral.setVisible(false);
		panGeneral.removeAll();
		panIntro.removeAll();
		panTest1.removeAll();
		panTest2.removeAll();
 
        panTest2.setBackground(Color.WHITE);
 
        JLabel test3 = new JLabel("Test - fenetre 2",JLabel.CENTER);
        panTest2.add(test3);
 
        boutonRetour2.addActionListener(new ChoixMenu3());
 
        panTest2.add(boutonRetour2);
        System.out.println("Je suis dans la fenetre 2.");
 
 
        panGeneral.add(panTest2);
		panGeneral.setVisible(true);
	}
 
 
	class ChoixMenu implements ActionListener {
 
		public void actionPerformed (ActionEvent evt) {
 
	    	//Si l'utilisateur a cliqué sur le premier bouton
	        if (evt.getSource() == bouton1) {
	        	Fenetre1();
	        }
 
	    	//Si l'utilisateur a cliqué sur le deuxieme bouton
	        if (evt.getSource() == bouton2) {
	        	Fenetre2();
	        }
		}
	}
 
	class ChoixMenu2 implements ActionListener {
 
		public void actionPerformed (ActionEvent evt) {
 
	    	//Si l'utilisateur a cliqué sur le premier bouton
	        if (evt.getSource() == bouton3) {
	        	Fenetre2();
	        }
 
	    	//Si l'utilisateur a cliqué sur le deuxieme bouton
	        if (evt.getSource() == boutonRetour1) {
	        	FenetrePrincipale();
	        }
		}
	}
 
	class ChoixMenu3 implements ActionListener {
 
		public void actionPerformed (ActionEvent evt) {
 
	    	//Si l'utilisateur a cliqué sur le deuxieme bouton
	        if (evt.getSource() == boutonRetour2) {
	        	FenetrePrincipale();
	        }
		}
	}
 
}