Aus einem JPanel den Titel eines JFrames ändern?

Lehtis

Grünschnabel
Hallo ich habe ein JFrame.
In diesem JFrame ist ein JPanel.
Und jetzt soll ich aus dem JPanel wenn eine bestimmte Bedinung erfüllt ist den Titel des Frames ändern.

Wie mach ich das denn?
 
Hmm... Da gäbe es mehrere Möglichkeiten.

Die wohl einfachste wäre, wenn du dem Panel die Instanz deines Frames überreichst und das Panel diese speichert. Dafür würde sich z.B. der Konstruktor eignen.

Allerdings würde das dafür sorgen, dass das Panel von einem Frame abhängig wäre und das könnte bei Wiederverwendbarkeit eventuell zu Problemen führen. Ich persönlich würde daher ein Event-Verhalten nutzen. Wenn deine Bedingung erfüllt ist, feuert dein Panel ein bestimmtes Event und alle registrierten Listener können dann darauf reagieren. Dein Frame könnte dann so ein Listener sein und würde dann bei dem Event eben selbst den Titel ändern. Das entkoppelt die Sache und macht das Arbeiten damit deutlich flexibler. Ist aber auch mehr Aufwand nötig. Dagegen ist die erste Variante deutlich schneller implementiert.
 
so danke für die Hilfe.
Ich habs nun so gemacht:

Java:
Container p;
for(p = this.getParent(); p != null; p = p.getParent()) {
    if(p instanceof JFrame)
          break;
    }
JFrame m = (JFrame)p;
 
Das geht auch, ja. Aber dabei musst du drauf achten, dass dann dein Panel auch wirklich ein direktes Child-Element eines Frames ist und nicht noch in weitere Panels geschachtelt verschwindet, denn dann wird es ClassCastExceptions regnen. Ist aber als Ansatz schon nicht schlecht.
 

Neue Beiträge

Zurück