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

aurelien0306 181 Messages postés jeudi 27 février 2003Date d'inscription 2 mars 2009 Dernière intervention - 3 mai 2005 à 13:19 - Dernière réponse : aurelien0306 181 Messages postés jeudi 27 février 2003Date d'inscription 2 mars 2009 Dernière intervention
- 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
aurelien0306 181 Messages postés jeudi 27 février 2003Date d'inscription 2 mars 2009 Dernière intervention - 4 mai 2005 à 12:41
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

++

Merci aurelien0306 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de aurelien0306
dmaillet 500 Messages postés mercredi 20 août 2003Date d'inscription 11 juillet 2007 Dernière intervention - 4 mai 2005 à 09:48
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.