web-dev-qa-db-fra.com

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

J'écris un programme où j'ai un JFrame et je veux en supprimer tous les composants, puis y ajouter 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, lorsque j'exécute le code, il affiche une fenêtre vide (pas le startPanel) et lorsque je minimise/redimensionne la fenêtre, la fenêtre devient noire. Si je laisse de côté la removeAll() et qu'il n'y a pas déjà d'éléments sur le JFrame, cela affiche très bien le startPanel. Avez-vous des idées sur la façon de supprimer tout, puis de faire apparaître le nouveau panneau?

27
scaevity

Vous devez appeler

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

removeAll() n'a pas été remplacé par add() ou remove() pour transférer vers contentPane si nécessaire.

50
Kavka
getContentPane().removeAll();
getContentPane().repaint();
5
Md Salman Ahmed

en supposant que votre objectif est d'ajouter quelque chose d'autre après avoir effacé le cadre, vous devez appeler valider après avoir ajouté les composants pour le mettre à jour

getContentPane().removeAll();
add(new component);
validate();
4
joe pelletier