Informatik (Java) Zwei Frames mit dem selben Konstruktor?

1 Antwort

(...) und ein zweiter Frame mit NUR dem Button "Ende" wird geschlossen.

Ich denke Mal, du meintest geöffnet. Andernfalls verstehe ich deine Beschreibung nicht.

Dem Konstruktor kannst du zwei Parameter geben.

public Zweifenster(String buttonTitel1, String buttonTitel2) {

Je nachdem, ob sie einen Wert haben, erstellst du Buttons und hängst sie dem Frame an.

if (buttonTitel1 != null && buttonTitel1.length() > 0) {
  // add button1 ...
}

// etc.

Beim Erstellen der Fensterinstanz kann also entschieden werden, welche Buttons gerendert werden sollen oder nicht.

Beispiel:

new Zweifenster(null, "Ende"); // Fenster mit Ende-Button
new Zweifenster(null, null); // Fenster ohne Buttons

Zuletzt noch ein paar grundsätzliche Anmerkungen zu deinem Code:

  • Klassennamen beginnen immer mit einem Großbuchstaben. Das ist eine übliche Java-Konvention, die dafür sorgt, dass Klassen beim Lesen sofort und einfach erkannt werden können.
  • All deinen Elementen (Variablen, Klassen) solltest du passende, aussagekräftige Bezeichner verpassen. Mit w1, p, l kann man nicht so viel anfangen. Es macht das Lesen deines Codes nur schwerer als nötig.
  • Die setVisible-Methode sollte erst aufgerufen werden, sobald das Fenster wirklich bereit zur Darstellung ist (also alle Einstellungen vorgenommen und das Anhängen aller Komponenten abgeschlossen wurde). So werden auch Zeichenvorgänge eingespart, die durchaus einige Ressourcen verbrauchen.
  • Das Label verwendest du nirgendwo. Das Panel braucht kein Feld, so lange es nur im Konstruktor angesprochen werden muss.
  • Dem Prinzip der Kapselung zufolge müssten alle deine Felder als private deklariert werden.