Réaffichage apres un removeAll

NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009 - 13 avril 2006 à 10:11
NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009 - 13 avril 2006 à 14:19
Bonjour,

Mon problème se situe au niveau de l'affichage. Au lancement de mon programme, j'appel le constructeur de class, qui s'occupe de la taille de la fenêtre et la rend visible, et j'appel une fonction qui contient tout ce que je veux afficher. Jusque là tout fonctionne :) tout s'affiche correctement.

Cependant j'ai un bouton qui lorsqu'on clique dessus est censé afficher autre chose. Je pourrai faire un new Affichage2 par exemple mais ça m'ouvrirai une autre fenetre ce qui n'est pas très performant (surtout quand on en a beaucoup). Alors dans l'évenement du bouton j'ai mit removeAll(); setVisible (false); setVisible(true); (Les setVisible pour effacer tout) donc du coup je me retrouve avec une fenetre vide (il a gardé la couleur du background quand même) mais à partir de là je n'arrive pas à réafficher quelque chose dans cette meme fenêtre :(

Merci

9 réponses

Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
13 avril 2006 à 14:12
Bon j'ai finalement réussi à en venir à bout !
En fait faut que tu fasses getContentPane().removeAll() et non pas removeAll() en fait sinon tu dégages le ContentPane avec !
Et pour mon soucis de réaffichage un pack() ça marche très bien ^^

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 9
13 avril 2006 à 10:17
il faut refaire des add...

Peux-tu nous montrer comment tu ajoutes tes composants initialement et ce que tu fais pour supprimer et ajouter les nouveaux?

"A game is a series of interesting choices." Sid Meier
NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009
13 avril 2006 à 11:26
voila une
partie du code :

class affichage extends JFrame {

affichage() {
super("MediaSpace beta test");
this.setSize(233,400);
this.setVisible(true);
}

void initGUI () {
this.setLayout(new BorderLayout());
this.setBackground(colorFond);

JPanel aPanel = new JPanel();
aPanel .setLayout(new GridLayout(1,3,200,20));

Valider = new JButton (">Valider<");
Valider.setBackground(couleurFond);

Valider.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeAll();
setVisible(false);
setVisible(true);
// ici j'ai essayé d'appeler une autre fonction qui fait à peu près la même chose que celle-là
}
});

aPanel .add(Valider);
this.add aPanel , BorderLayout.SOUTH);
}
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 9
13 avril 2006 à 12:05
Qu'attends-tu avec ces 3 lignes?
removeAll();
setVisible(false);
setVisible(true);

Pour moi tu supprimmes tous les composants puis tu fais disparaître la fenêtre et tu la fais réapparaître et c'est tous...

Si tu veux voir d'autres composants, il faut que tu fasses des ajouts de composants. Ton setVisible false puis true ne sert à rien...c'est comme ci tu faisait un repaint() d'une surface vide.

"A game is a series of interesting choices." Sid Meier

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009
13 avril 2006 à 12:54
"removeAll();
setVisible(false);
setVisible(true);"

ça permet d'enlever tout les composants, en faisant juste ça, ça ne les enlève pas graphiquement, c'est pouquoi après on enleve et on remet la fenetre, Comme ça on se retrouve avec une fenetre vide dans laquel j'aimerai rejouter d'autre panel, composants...Mais le probleme c'est que ça n'affiche rien
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 9
13 avril 2006 à 13:35
au lieu de faire setVisible(), fais repaint() ou updateUI().

Tu les ajoutes comment ensuite?

"A game is a series of interesting choices." Sid Meier
NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009
13 avril 2006 à 13:46
ok

Ensuite j'appel, à l'intérieur du "Valider.addActionListener" une autre fonction qui fait à peu de chose près la même chose que initGUI()
Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
13 avril 2006 à 13:50
J'ai un problème plus ou moins semblable mais sans le remove all ...
Voilà la partie interessante du code :

myFrame.getContentPane().add (liste , "Center");
myFrame.getContentPane().repaint();

liste est une JComboBox... Quand ce morceau de code s'execute dans un actionPerformed rien ne bouge et faut que je redimmensionne la fenêtre pour que ça s'affiche vraiment.
A la place de repaint j'ai essayé de mettre update aussi sans résultat ...

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...
NeT0n Messages postés 28 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 5 mai 2009
13 avril 2006 à 14:19
Ah oui en effet :D

merci Taranael :)
Rejoignez-nous