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?
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.
getContentPane().removeAll();
getContentPane().repaint();
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();