[Swing] supprimer composant dans ma JFrame

Résolu
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009 - 3 mai 2005 à 13:19
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009 - 4 mai 2005 à 12:41
Bonjour,

voilà j'ai ma JFrame avec un BorderLayout (sur getContentPane()). En
fait j'aimerais changer le composant qui s'affiche dans le centre en
fonction de l'état dans lequel je suis.

sauf que quand j'utilise la fonction remove ça ne me supprime pas mon composant. Par contre l'autre est bien réaffiché



public class mafenetre extends JFrame implements java.util.Observer {


/* un des 3 panel est affiché a chaque fois, c'est un de ceux la qui est affiché dans le centre de ma jframe */


JPanel mon_panel_entree;


JPanel mon_panel_connecte;


JPanel mon_panel_attente;


public mafenetre()


{


Container pan = this.getContentPane();


pan.setLayout(new BorderLayout());


mon_panel_entree = new JPanel();


..... ajout de mes composants dans mon_panel_entree




pan.add(mon_panel_entree,BorderLayout.CENTER);


pan.add(new JLabel("Mon application",BorderLayout.NORTH);


pan.add(new JLabel("version 1.0"),BorderLayout.SOUTH);


this.setContentPane(pan);


this.pack();


this.setVisible(true);


}




//dans ma fonction de mise a jour


...


this.getContentPane().remove(mon_panel_entree);


mon_panel_attente = new JPanel();


....


this.getContentPane().add(mon_panel_attente,BorderLayout.CENTER);


this.pack();


this.repaint();




voila... donc mon_panel_attente est bien ajouté mais mon_panel_entree n'est pas supprimé



merci d'avance

2 réponses

aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
4 mai 2005 à 12:41
j'ai essayé revalidate mais il ne la trouve
pas pour les objets container ou meme ma jframe (pourtant dans la doc
cette fonction est héritée de JComponent... enfin). donc j'ai essayé
validate..

En fait je me suis rendu compte que c'était une petite erreur de prog :

dans ma fonction de mise à jour j'avais un switch en fonction de l'état. genre :

switch(etat)

{

case entree :

...

break;

case en_attente :

this.getContentPane().remove(mon_panel_entree);


mon_panel_attente = new JPanel();


....


this.getContentPane().add( mon_panel_entree ,BorderLayout.CENTER);


this.pack();

this.repaint();

break;

case connecte :

this.getContentPane().remove(mon_panel_attente);


mon_panel_connecte = new JPanel();


....


this.getContentPane().add(mon_panel_connecte,BorderLayout.CENTER);


this.pack();

this.repaint();

break;



bref je créais bien mon panel mais j'ajoutais le
mauvais dans le cas attente et donc ensuite bien sur que je supprimais
un composant qui était pas affiché et celui qui était affiché je le
supprimais pas donc évidemment, dans ces conditions difficile que ça
marche



oups ma nuit de sommeil m'a éclairci je crois...

en tout cas merci de m'avoir aidé car sinon j'aurais pas vu ma faute

merci d'avoir répondu

++
3
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
4 mai 2005 à 09:48
rajoute un revalidate de ton contentPane, et ca devrait fonctionner (voire un revalidate de toute ta JFrame)

-------------------
dams
-------------------
0
Rejoignez-nous