Theorie zur GUI

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Theorie zur GUI

    Hallo,

    ich will mit java eine "größere" grafische Anwendung schreiben. Mit größer sind versch. Aktionen gemeint, die nicht zusammen auf ein Frame "passen" (logisch gesehen), z.B. Taschenrechner und Rot13 Funktion.. ka.

    Wie löse ich das am geschicktesten, wenn ich beim Programmaufruf ein "Begrüßungsfester" haben will, der dann via Button zum eigentlichen Programm führt.
    Setzt man die anderen Funktionen einfach einzeln (könnte viel Arbeit werden und redundant sein) auf invisible oder kann man ganze Frames neu aufrufen und schließen?

    Also nochmal "grafisch":
    Mainframe:
    [ButtonX und ButtonY] -> Bei Klick auf ButtonX öffnet sich FensterX [X]


    Falls noch etwas unklar ist, bitte einfach fragen ;)

    Danke
  • Komm letztendlich darauf an, was du da wirklich machen willst.

    Zum einen kannst du dein "Hauptfenster" als JFrame realisieren und die Fenster die du aufrusft als JDialog realisieren. Dadurch könntest du die Dialoge Modal aufrufe, heißt das Hauptfesnter ist zar noch da, kann aber erst dann wieder benuttz werden, wenn der Dialog geschlossen wurde.

    Ich würde jedoch versuchen das ganze so generisch wie möglich zu machen heißt:

    1. Deine HauptfensterKlasse hat eine Liste von JFrame/JDialog, geht diese Liste durch und erzeugt automatisch einen Button.
    2. Eine Abstrakte Klasse SubJFrame ö.ä. die JFrame/JDialog erweitert und erwartet, dass die Methode getName() implementiert wird (die kannst du dann oben beim Button erstellen auslesen). Ausserdem Setzt die Klasse im Konstruktor einen WindowListener auf das Fenster, sodass du weißt wann das Fenster geschlossen wurde und wann das Hauptfenster wieder nagezeigt werden soll (wenn du nicht mit JDialog arbeiten willst). Die Referenz der Hauptklasse kannst du beispielsweise im Konsturktor mitgeben oder Singelton oder was dir halt am besten gefällt.