[Swing] supprimer composant dans ma JFrame [Résolu]

Messages postés
181
Date d'inscription
jeudi 27 février 2003
Dernière intervention
2 mars 2009
- - Dernière réponse : aurelien0306
Messages postés
181
Date d'inscription
jeudi 27 février 2003
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
181
Date d'inscription
jeudi 27 février 2003
Dernière intervention
2 mars 2009
3
Merci
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

++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de aurelien0306
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Dernière intervention
11 juillet 2007
0
Merci
rajoute un revalidate de ton contentPane, et ca devrait fonctionner (voire un revalidate de toute ta JFrame)

-------------------
dams
-------------------
Commenter la réponse de dmaillet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.