PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Panel überschreiben



Andi B.
25-09-2003, 20:49
Hallo Leute,

ich bin noch ziemlich am Anfang von Java. Falls ich etwas dummes schreibe, bitte nicht böse sein.
Ich habe folgende Frage.
Wenn man einem JFrame ein neues JPanel zuweist, jedoch auf dem alten JPanel elemente enthalten waren(buttons oder textfelder....) werden die nicht gelöscht.
Mein Kollege hat mir da jetzt empfohlen einen String array anzulegen, dem alle Komponenten vom vorherigen JPanel übergeben werden; abprüfen zur welcher Instantz die Komponenten gehören und demnach zu löschen.
Gut, das klappt. Aber schön ist das nicht! Außerdem, was ist, wenn Komponenten nicht von der Klasse JPanel abegleitet wurden???

Hier ist der Quelltext.......


Component[] cmp = mainframe.getContentPane().getComponents();
for (int i = 0; i < cmp.length; i++)
{
if (cmp[i] instanceof JPanel)
mainframe.getContentPane().remove(cmp[i]);
}
mainframe.getContentPane().add(this,BorderLayout.C ENTER);
mainframe.validate();

}


Das muss doch einfacher gehen??!!!
Kann man nicht das ContentPane total neu aufbauen, so, dass alle enthaltenen elemente weg sind?

Danke und Gruß
Andi

anda_skoa
25-09-2003, 21:00
Original geschrieben von Andi B.

Kann man nicht das ContentPane total neu aufbauen, so, dass alle enthaltenen elemente weg sind?


Container.removeAll();

Allerdings sollte man sicher überlegen, ob man wirklich Objekte erzeugen und dann ersetzen will.
Object Creation ist teuer, besonders bei AWT Peers, das löschen beschäftigt dann den Garbage collector.

Die wenigsten GUIs ändern sich laufen.

Ciao,
_