Swing Ein JFrame mehrere Ansichten

casi91

Bekanntes Mitglied
Hallo Community,

ich bin derzeit dabei mich in Java einzuarbeiten und dabei auch in das Swing Framework.
Nun habe ich testweise ein JFrame (Kontakte) erstellt in dem meine Daten angezeigt werden, Dialoge aufgerufen werden können und und und.

Nachdem das alles soweit funktioniert, wollte ich das ganze Programm nun um eine Ebene nach oben bringen.
Die Struktur soll folgendermaßen sein:

Programmaufruf --> JFrame mit Menüleiste, Toolbox etc. (Borderlayout)

Wenn man nun auf den Menüeintrag/Button (o.ä) "Kontakte" klickt, soll im selben Frame (Menüstruktur etc. soll beibehalten werden) meine Kontaktansicht angezeigt werden.
(Es sollen natürlich noch diverse andere Ansichten hinzugefügt werden, zwischen denen man dann wechseln kann)

Nun meine Fragen.
- Wie kann ich mehrere Ansichten im selben Frame anzeigen um zwischen ihnen hin und her wechseln zu können?
- Wie kann/muss ich mein zuvor erstelltes JFrame (Kontakte) umbauen damit ich es als Ansicht in mein (Haupt) JFrame einbauen kann?

Ich hoffe mein Problem ist klar geworden und ihr könnt mir helfen.
Danke schonmal im vorraus 🙂
 
Danke für die Rückmeldung 🙂,
das hört sich ziemlich gut und einleuchtend an, werde mich gleich dran versuchen.

Und sehe ich es dann richtig, dass ich mein bisheriges JFrame (Kontakte) als panel umbauen und entsprechend einbinden muss?

Gibt es irgendeine Möglichkeit, dass ich die Einzelnen Ansichten als seperate *.java datei einbinde?
An sich dürfte das ja kein Problem sein, jedoch habe ich zweifel wegen den Dialogen, da muss ich doch im Konstruktor den "owner" mitgeben, was bei mir dann die ganze Zeit das JFrame war und ein Panel kann ich da nicht mitgeben...oder?
 
Du kannst jede Ansicht in eine eigene java Datei packen, musst eben immer JPanel extenden
"public class SchoeneAnsicht extends JPanel{.........}"
 
Wie ich zuvor geschrieben habe weiß ich, dass das an sich kein Problem darstellt.
Die Frage die ich mir stelle ist, wie verwalte ich dann meine Dialoge.

Beispiel:
in der Kontaktansicht möchte ich einen Dialog öffnen, der mir es ermöglicht einen neuen Kontakt anlegen zu können.

Nun hatte ich es bisher so gemacht:

Java:
KontaktDialog dialog = new KontaktDialog(MyJFrame, "Titel", true);

Bei dieser Variante einen Dialog aufzurufen, gebe ich ja den "owner" in diesem Fall das JFrame mit.
Wie mache ich das nun bei dem Panel?
Wenn ich mich nicht täusche, kann ich ja einem Dialog als owner nicht das Panel mitgeben?
 
getTopLevelAncester

oder wie wäre es mit einer allgemein steuernden Komponente (Controller) , die die den Frame kennt?
Diese Komponente ist an allen Ansicht Panels als Listener registiert und die Panels fordern eine Dialoganzeige über diesen Listener an.
 
Wäre natürlich auch eine Idee.
Ich werde die 2 Varianten (getTopLevelAncester, Controller) mal testen und schauen, was mir zu guter letzt am besten gefällt :-D

Danke nochmal für die Rückmeldung,
sobald ichs so programmiert habe, dass es meinen Vorstellungen entspricht. Meld ich mich wieder 🙂
 

Zurück
Oben