ActionListener - Architekturproblem



  • Schreibe gerade an meiner ersten größeren Java Anwendung und habe ein Architekturproblem.
    Hab in den letzten Tagen mehrere JFrames programmiert, die in ihren Modulen jeweils noch eine ActionListener Klasse spendiert bekommen haben, um auf verschiedene Events zu reagieren.

    Die Architektur stellt sich so dar: (keine Vererbungsarchitektur, sondern obere Klasse erzeugt Instanz der unteren Klasse)

    Application Klasse (erzeugt nur eine Instanz des StartWindow)
    |
    StartWindow Klasse (erzeugt die Fenster)
    |        |         |
    |        |         OptionWindow Klasse
    |        |
    |        StatWindow Klasse
    |
    RulesWindow Klasse
    

    Nun zu meinem Problem:
    Ich möchte meinem Programm verbieten zum Beispiel das RulesWindow nicht öffnen zu dürfen, wenn das Optionsfenster offen ist. Aus diesem Grund deaktiviere ich in der StartWindow Klasse die betreffenden Listener in dieser Zeit.

    Nur das Wieder-Aktivieren ist ein Problem.
    Ich weiß doch in der StartWindow Klasse nicht, wann meine Instanz des OptionWindow vernichtet wird.
    Anders ausgedrückt, es existiert in der StartWindow Klasse zwar eine Methode, die die Listener wieder aktivieren würde, aber ich komme an diese Methode aus dem OptionWindow Klasse doch gar nicht ran, weil die Instanz des StartWindow nur in der Application Klasse liegt.



  • Wäre das nicht besser über modale/amodale Fenster gelöst?



  • Ne so wollte ich es nicht machen, da einige Funktionen aus der darüber liegenden Ebene trotzdem noch verfügbar sein sollen.

    Ich habe die zwei Möglichkeiten:
    - Referenz mit übergeben
    - Observer-Pattern verweden

    und habe mich nun für die Zweite entschieden.



  • Richard schrieb:

    Nun zu meinem Problem:
    Ich möchte meinem Programm verbieten zum Beispiel das RulesWindow nicht öffnen zu dürfen, wenn das Optionsfenster offen ist.

    verbieten ... nicht öffnen zu dürfen 😕 Bedeutet das jetzt man muss es machen?


Anmelden zum Antworten