webentwicklung-frage-antwort-db.com.de

Wie entferne ich alle Komponenten von einem JFrame in Java?

Ich schreibe ein Programm, in dem ich einen JFrame habe und alle Komponenten daraus entfernen möchte. Dann füge ich nur eine Komponente hinzu und male den Frame neu. Was ich bisher habe, ist etwa der folgende Code (aufgerufen in einem Objekt, das JFrame implementiert, wobei StartPanel JPanel implementiert):

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

Wenn ich den Code ausführe, wird jedoch ein leeres Fenster angezeigt (nicht das startPanel), und wenn ich das Fenster minimiere/in der Größe verändere, wird das Fenster schwarz. Wenn ich die Funktion removeAll() weglasse und es noch keine Elemente auf dem JFrame gibt, wird das startPanel einwandfrei angezeigt. Irgendwelche Ideen, wie man tatsächlich alles entfernt und das neue Panel dann immer noch anzeigt?

27
scaevity

Sie müssen anrufen

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

removeAll() wurde nicht als add() oder remove() überschrieben, um nach Bedarf an contentPane weiterzuleiten.

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

angenommen, Sie möchten etwas hinzufügen, nachdem Sie den Frame gelöscht haben. Rufen Sie validate auf, nachdem Sie diese Komponenten hinzugefügt haben, um ihn zu aktualisieren

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