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