IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

probleme de changement des panel au sein d'une fenetre


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Par défaut probleme de changement des panel au sein d'une fenetre
    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

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Solution possible...
    Bonjour,

    Après lecture de votre code, il me semble normal que votre instruction remove ne supprime rien. Il me semble que la condition sous-jacente est que l'objet fournit en paramètre soit strictement égale à l'objet que l'on désire retirer. Hors, deux lignes plus haut, vous ré-instanciez l'objet que vous passez en paramètre, il est donc différent de celui contenu...
    Enfin, je crois...
    Bref, il me semble que la méthode remive est surchargée et permet le passage d'un paramètre sous forme de int représentant l'indice de positionnement de l'objet dans le Container.
    J'en profite pour précisé que bien qu'il n'y ait théoriquement aucunes incidences, il n'est pas subtil d'avoir appelé votre objet container. Mais c'est sans importance...
    Il vous suffit donc de trouver le moyen de récupérer cet indice et l'exploiter avec la bonne version de remove(int indexe) de votre JPanel.
    Plus simplement, si vous pouvez décaler la ré-instanciation de votre objet à supprimer après avoir tenté de le supprimé du JPanel sans toucher à votre methode est peut-être possible. Il suffit de tester...

    Bonne chance...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Par défaut
    je vous remercie
    j'ai bien chercher sur la méthode qui retourne l'indice de l'objet ou niveau du container mais j'ai rien trouve
    merci de m'aider

Discussions similaires

  1. Affectation des projets au sein d'une SSII
    Par V4Vendetta dans le forum SSII
    Réponses: 2
    Dernier message: 18/09/2013, 15h55
  2. Gestion workflow : traitement des dérogations au sein d'une entreprise industrielle
    Par saidsaid dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 07/10/2011, 12h45
  3. Réponses: 2
    Dernier message: 02/06/2010, 14h28
  4. [PHP 4] Recuperer des données au sein d'une page HTML
    Par gilles974 dans le forum Langage
    Réponses: 1
    Dernier message: 10/03/2009, 09h36
  5. Réponses: 3
    Dernier message: 14/04/2006, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo