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)
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.
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)
Code:
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.