salut tout le monde
j'ai un serieux probleme ici
je vais essayer de bien expliquer afin que vous pouvez m'aider

j'ai 4 jpanel : Panneau, Connection , Opperation , Consultation
le jpanel panneau est un jpanel qui contient une image dans l'arriere plan et qui va contenir une jpanel (Connection ou Opperation ou Consultation)dans son cote EST.
alors a chaque fois ke l'utilisateur tente d'acceder a une option via le menu je change le jpanel cela ve dire ke :
je supprine l'encien jpanel depuis le jpanel panneau
ex:
panneau.remove(Connection)
et j'ajoute le nouveaux Jpanel avec la methode Add
bon dans le menu ya 6 options:
menu 1: Inscription || Modification || Suppression
menu 2: Consulter tous les membres || les membres qui n'ont pas paye || Consultation personalisee(ca ve dire ke l'user puisse manipuler la methode de consultation)
alors pour les element de la premiere menu + l'element 3 de mnu 2(): le jpanel Opperation s'occupe d'eux en changeant des element qui appartient a ce JPanel(Opperation)
et pour les deux elements restant du 2eme menu je dois changer le jpanel courant par le JPanel Consultation qui S'occupe des 3 element de menu 2 en changeant aussi ses elements .
Voila le code de la fenetre pricipale :
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Fenetre extends JFrame{
	
	//declaration des element de menu :
	private JMenuBar menuBar = new JMenuBar();
	private JMenu OPP = new JMenu("Opperation");
	private JMenu Cons = new JMenu("Consultation");
	private JMenuItem item1 = new JMenuItem("Inscription");
	private JMenuItem item2 = new JMenuItem("Modification");
	private JMenuItem item3 = new JMenuItem("Suppression");
	private JMenuItem item4 = new JMenuItem("Personnaliser");
	private JMenuItem item5 = new JMenuItem("Tous les membres");
	private JMenuItem item6 = new JMenuItem("Les membres non payes");
	//fin de declaration de menu
	
	//declaration des panels :
	public  Panneau container=new Panneau();//un JPanel
	public  PanelInscription Opperation=new PanelInscription();//jpanel Opperation
	public  PanelConnection Connection=new PanelConnection(); //jpanel Connexion
	public  PanelConsultation Consultation=null; //jpanel Consultation
	private String genreOpp;/*une variable qui m'indique le jpanel affiche,elle peut prendre plusieurs valeurs(Ins=inscription,Mod=modification
	Supp=suppression,Cons=consultation,Conn=connection)
	*/
	public Fenetre(){
		this.setTitle("Association AFAk");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBackground(Color.white);
		this.setResizable(false);
		//Preparation des elements de menu
		this.OPP.add(item1);
		this.OPP.add(item2);
		this.OPP.add(item3);
		this.Cons.add(item5);
		this.Cons.add(item6);
		this.Cons.add(item4);
		menuBar.add(OPP);
		menuBar.add(Cons);
		this.setJMenuBar(menuBar);
		item1.addActionListener(new item1Listener());
		item2.addActionListener(new item2Listener());
		item3.addActionListener(new item3Listener());
		item4.addActionListener(new item4Listener());
		item5.addActionListener(new item5Listener());
		item6.addActionListener(new item6Listener());
		item1.setEnabled(false);
		item2.setEnabled(false);
		item3.setEnabled(false);
		item4.setEnabled(false);
		item5.setEnabled(false);
		item6.setEnabled(false);
		//fin de preparation des elemnt de menu
		this.setSize(720,420);
		this.setLocationRelativeTo(null);
		
		//Au demarrage de lapplication j'affiche le jpanel de connection pour ke l'user puisse se connecter
		container.setLayout(new BorderLayout());
		container.add(Connection,BorderLayout.EAST);
		//et j'initialise la variable genreOpp avec Conn 
		genreOpp="Conn";
		this.setContentPane(container); //et j'ajoute le container a ma fenetre
		this.setVisible(true);
	}
	
	private void getInscription(){//une methode appelee au moment du clique sur Inscription(element 1 de menu 1)
		//un teste sur le JPanel courant avant de le changer 
		if(genreOpp.equals("Cons"))
		{//Si le jpanel courant est Consultation je le supprime et je le remplace par Opperation
			this.container.remove(Consultation);
			this.container.add(Opperation,BorderLayout.EAST);
			this.setContentPane(container);
		}
		//Si nn quelque changement sur le jpanel Opperation
		this.Opperation.set_Genre_Opp("Ins");
		this.Opperation.ViderChamps(this.Opperation.get_Genre_opp());
		item1.setEnabled(false);
		item2.setEnabled(true);
		item3.setEnabled(true);
		item4.setEnabled(true);
		item5.setEnabled(true);
		item6.setEnabled(true);
	}
	private void getModification(){//une methode appelee au moment du clique sur Inscription(element 2 de menu 1)
                //un teste sur le JPanel courant avant de le changer 
		if(genreOpp.equals("Cons"))
		{//Si le jpanel courant est Consultation je le supprime et je le remplace par Opperation 
			this.container.remove(Consultation);
			this.container.add(Opperation,BorderLayout.EAST);
			this.setContentPane(container);
		}
                //Si nn quelque changement sur le jpanel Opperation
		this.Opperation.set_Genre_Opp("Mod");
		this.Opperation.ViderChamps(this.Opperation.get_Genre_opp());
		this.Opperation.setSearchForModify(false);
		item1.setEnabled(true);
		item2.setEnabled(false);
		item3.setEnabled(true);
		item4.setEnabled(true);
		item5.setEnabled(true);
		item6.setEnabled(true);
		
	}
	private void getSuppression(){//une methode appelee au moment du clique sur Inscription(element 3 de menu 1)
                //un teste sur le JPanel courant avant de le changer 
		if(genreOpp.equals("Cons"))
		{//Si le jpanel courant est Consultation je le supprime et je le remplace par Opperation 
			this.container.remove(Consultation);
			this.container.add(Opperation,BorderLayout.EAST);
			this.setContentPane(container);
		}
                //Si nn quelque changement sur le jpanel Opperation
		this.Opperation.set_Genre_Opp("Supp");
		this.Opperation.ViderChamps(this.Opperation.get_Genre_opp());
		item1.setEnabled(true);
		item2.setEnabled(true);
		item3.setEnabled(false);
		item4.setEnabled(true);
		item5.setEnabled(true);
		item6.setEnabled(true);		
	}
	private void getConsultationPersonnaliser(){//une methode appelee au moment du clique sur Consultation Personnaliser(element 3 de menu 2)
                //un teste sur le JPanel courant avant de le changer 
		if(genreOpp.equals("Cons"))
		{
//Si le jpanel courant est Consultation je le supprime et je le remplace par Opperation
			this.container.remove(Consultation);
			this.container.add(Opperation,BorderLayout.EAST);
			this.setContentPane(container);
		}
//Si nn quelque changement sur le jpanel Opperation		
		this.Opperation.set_Genre_Opp("Cons");
		this.Opperation.ViderChamps(this.Opperation.get_Genre_opp());
		item1.setEnabled(true);
		item2.setEnabled(true);
		item3.setEnabled(true);
		item4.setEnabled(false);
		item5.setEnabled(true);
		item6.setEnabled(true);	
	}
	
	private void getConsultationAllMembre(){//une methode appelee au moment du clique sur Consultet tous les membres(element 1 de menu 2)
		List<Membre> mesMembres=null;
		String requete="select * from membres ";
		try {
			mesMembres=AcceeMysql.chercher(requete);//AcceeMysql est une classe qui effectue des opperation sur la base de donnees mysql
		} catch (Exception e) {
			// TODO Bloc catch auto-généré
			e.printStackTrace();
		}
		// mesMenbres  c'est une liste qui contient les membres disponible
		if(mesMembres!=null)//Avant de chnager le jpanel je teste si la liste n'est pas vide
		{
			
			ChangePanelToCons(mesMembres,requete);//appele de la mathode : chnager panel to consultation
			this.Opperation.set_Genre_Opp("Cons");
			item1.setEnabled(true);
			item2.setEnabled(true);
			item3.setEnabled(true);
			item4.setEnabled(true);
			item5.setEnabled(false);
			item6.setEnabled(true);
		}
		else
		{//si la liste est vide j'affiche un message :
			JOptionPane.showMessageDialog(null, "Aucun membre trouve !!", "Information", JOptionPane.INFORMATION_MESSAGE);
		}		
	}
	
	private void ConsultationNonPaye(){//une methode appelee au moment du clique sur Consultet les membres non paye(element 2 de menu 2)
		List<Membre> mesMembres=null;
		String requete="select membres non payes";
		try {
			mesMembres=AcceeMysql.chercher(requete);
		} catch (Exception e) {
			// TODO Bloc catch auto-généré
			e.printStackTrace();
		}
// mesMenbres  c'est une liste qui contient les membres qui n'ont pas paye
		if(mesMembres!=null)
		{//Avant de chnager le jpanel je teste si la liste n'est pas vide
			ChangePanelToCons(mesMembres,requete);//appele de la mathode : chnager panel to consultation
			this.Opperation.set_Genre_Opp("Cons");
			item1.setEnabled(true);
			item2.setEnabled(true);
			item3.setEnabled(true);
			item4.setEnabled(true);
			item5.setEnabled(true);
			item6.setEnabled(false);
		}
		else
		{//si la liste est vide j'affiche un message :
			JOptionPane.showMessageDialog(null, "Aucun membre non paye trouve !!", "Information", JOptionPane.INFORMATION_MESSAGE);
		}
		
	}
	//les classes listeners sur les elements de menus :
    class item1Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	getInscription();
        	}
    }
    class item2Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	getModification();
        }
        
    }
    class item3Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	getSuppression();
        }
        
    }
    class item4Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	getConsultationPersonnaliser();
        }
    }
    class item5Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	getConsultationAllMembre();
        }
    }
    class item6Listener implements ActionListener{
        public void actionPerformed(ActionEvent arg0) {    	
        	ConsultationNonPaye();
        }
    }
    //fin d'implementation des classe listeners sur les elements de menus 
    
    
    
    //le probleme est ici :dans cette methode 
    public  void ChangePanelToCons(List<Membre> mesMembres,String requete){
    	//a l'appel de cette fonction je cree un new jpanel Consultation qui va contenir une liste des membres selon la liste passee en parametre
    	//la variable requete contient la requete personnalise par l'user afin de mettre a jour la liste au moment de changement
    	
    	Consultation=new PanelConsultation(mesMembres,requete);
        //je teste si le jpanel courant et Consultation
    	if(genreOpp.equals("Cons"))  Bloc ou ya le probleme
    	{
    		container.remove(Consultation);//je le supprime
    		
    		//!!!!!cest ici le probleme .il ne supprime pas
    		
    		container.add(Consultation,BorderLayout.EAST);//je le remplace par le new jpanel de type consultation
    		this.setContentPane(container);
    	}
    	else
    	{
    		//Si le jpanel actuel est Opperation
    		container.remove(Opperation);//je le supprime
    		container.add(Consultation,BorderLayout.EAST);//je le remplace par Consultation
    		this.setContentPane(container);
    		genreOpp="Cons";
    	}
    }
    
    //fin 
    
    //cette methode est appelee apres le clique sur le bouton se connecter et l'execution des instructions de verification de login et password 
    public void set_connecion(){
		item1.setEnabled(true);
		item2.setEnabled(true);
		item3.setEnabled(true);
		item4.setEnabled(true);
		item5.setEnabled(true);
		item6.setEnabled(true);
    	getInscription();
		container.remove(Connection);
    	container.add(Opperation,BorderLayout.EAST);
    	genreOpp="Opp";
		this.setContentPane(container);

    }
    //methode set de la variable genreOPP
    public void setGenreOPP(String s)
    {
    	genreOpp=s;
    }
    //methode get de la variable genre Opp
    public String getGenreOpp(){
    	return genreOpp;
    }
}
tout marche bien sauf que au moment de l'execution du bloc ou ya le probleme,la methode remove ne sexecute pas...
bon comme vous remarquez ya plusieurs instructions de la methode remove applique sur le jpanel panneau pour supprimet le jpanel Opperation ou Connection ou Consultation
cependant le methode remove Applique sur le jpanel panneau pour supprimer le jpanel Consultation ne marche pas
mais !!!pour quoi la seule difference entre les deux jpanel Opperaton,Connection et le jpanel Consultation c'est que ce dernier est initialiser avec null au moment du declaration !
merci pour votre soutien
j'espere que j'ai bien éclairci mon problème et je suis la pour vos conseils et vos remarque
merci de m'aider