Wie entferne ich ein JPanel von einen JFrame bei einen 2D Tile Spiel (Java)?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Mit der remove-Methode kannst du Komponenten von einem Container entfernen. Danach muss allerdings die Oberfläche neugezeichnet werden. Mit dem Aufruf von revalidate gibst du an, das die Hierarchie des Frame nicht mehr valid ist und daher neugebaut werden muss.

frame.remove(yourPanel);
frame.revalidate();
frame.repaint();

Wenn du ein neues Panel hineinhängen möchtest, mach das noch vor dem revalidate-Aufruf.

(...) die das Ende der Geschichte des Spiels anzeigen.

Man könnte auch einfach die Zeichenfläche des Panels überzeichnen / überdecken. So müsste das Fenster nicht neu gezeichnet werden.

Ein CardLayout zu verwenden, könnte ebenso eine Lösungsoption sein.


Kikobelo 
Beitragsersteller
 29.06.2023, 18:53

Ich kann das jedoch nicht einfach in der MainClass machen, da wenn das GameField gestartet wird, geht es da nicht mehr so leicht raus.

regex9  29.06.2023, 22:25
@Kikobelo

Du brauchst lediglich eine Referenz, die auf das JFrame-Objekt zeigt. Entweder du übergibst eine an das GameField-Objekt (bspw. über den Konstruktor) oder du nutzt die getParent-Methode.