Comment supprimer tous les composants d'un JFrame en Java?

j'écris un programme dans lequel j'ai un JFrame et je veux en supprimer tous les composants, puis n'y ajouter qu'un seul composant et repeindre le cadre. Ce que j'ai jusqu'à présent est quelque chose comme le code ci-dessous (appelé dans un objet qui implémente JFrame, où StartPanel implémente JPanel):

removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();

cependant, quand j'exécute le code, il affiche une fenêtre vide (pas le startPanel) et quand je minimise/redimensionne la fenêtre, la fenêtre devient noire. Si je quitte l' removeAll() et il y a pas des éléments déjà sur le JFrame il affiche le startPanel très bien. Toutes les idées sur la façon de supprimer tout, puis obtenir le nouveau panneau pour toujours?

26
demandé sur mKorbel 2012-02-19 09:46:15

3 réponses

Vous devez appeler

 private JFrame frame = new JFrame();
 ...
 ...
 frame.getContentPane().removeAll();
 frame.repaint();

removeAll() n'a pas été remplacé par add() ou remove() pour avancer vers le contentPane en tant que de besoin.

46
répondu Kavka 2018-06-21 04:51:47
getContentPane().removeAll();
getContentPane().repaint();
5
répondu Md Salman Ahmed 2013-12-18 10:51:27

en supposant que votre but est d'ajouter quelque chose d'autre après vous effacez le cadre que vous devez appeler valider après ajouter ces composants pour le mettre à jour

getContentPane().removeAll();
add(new component);
validate();
4
répondu joe pelletier 2015-08-27 15:27:56