Hallo zusammen.
Bin Anfänger in Java und schlage mich dementsprechend mit einem Anfänger-Problem herum.
Bis jetzt verzichtete ich auf Eclipse und schrieb alles in einem einfachen Editor (Textpad oder Wordpad).
Ich finde das zum Lernen der Sprache vorteilhaft, da mir Eclipse zu viele Sachen automatisch macht, welche ich dann noch nicht richtig verstehe.
Im Allgemeinen geht es um die Hierarchie von Klassen und dem Zugriff auf Instanzen von einer Klasse zur Anderen.
In einem Projekt möchte ich der Übersicht halber meine Listener selber, in separaten Klassen schreiben.
Somit benutze ich keine anonymen ad hoc Listener, und die geschriebenen Listener-Klassen sollen keine inneren Klassen der Gui-Klasse sein.
Solange ich meine Listener-Klassen als innere Klasse vom Gui schreibe, funktioniert alles wunderbar.
Dadurch wird aber der Programm-Code lang und unübersichtlich.
Mache ich die Listener-Klassen zu eigenständigen, wirds problematisch.
Ich gehe dabei folgendermassen vor:
Ich habe eine "Starter"-Klasse, welche nur die Main-Methode enthält.
Dort instanziere ich ein Gui-Objekt (JFrame) und mache es sichtbar.
Z.B: Gui fenster = new Gui("blabla");
Meine Gui-Klasse erbt von JFrame.
Im Konstruktor der Gui-Klasse baue ich dann die graphische Oberfläche auf, JPanels, JButtons, JLabels etc.
Dort instanziere ich auch meine Listener-Objekte und adde sie den entsprechenden Elementen zu.
Z.B.:
MeinSchalterListener druck1 = new MeinSchalterListener();
button1.addActionListener(druck1);
Neben dem Konstruktor enthält die Gui-Klasse noch die Getter und Setter-Methoden.
So weit so gut.
Das Gui steht, die Listener sind aktiv.
Wie kann ich jetzt aber in den Performer-Methoden der Listener auf die Instanzen / Methoden der Gui-Klasse zugreifen?
Die Instanz "fenster" ist aus den Listener-Methoden heraus nicht sichtbar.
Ich kann weder auf Gui-Elemente (wenn ich das Kapselung-Prinzip ignoriere), noch auf Getter und Setter der Gui-Klasse zugreifen, was kein Problem ist, solange die Lister-Klassen innere der Gui-Klassen sind.
Allgemein formuliert:
Wie können bei zwei eigenständigen Klassen die Methoden der einen auf die Instanzen der anderen zugreifen und das in beide Richtungen?
Ich konnte das nur realisieren, wenn beide Klassen innere Klassen einer äusseren Klasse waren.
Hoffe, dass das Problem auch ohne Code verständlich formuliert ist...
Bedanke mich für die Antworten
Bin Anfänger in Java und schlage mich dementsprechend mit einem Anfänger-Problem herum.
Bis jetzt verzichtete ich auf Eclipse und schrieb alles in einem einfachen Editor (Textpad oder Wordpad).
Ich finde das zum Lernen der Sprache vorteilhaft, da mir Eclipse zu viele Sachen automatisch macht, welche ich dann noch nicht richtig verstehe.
Im Allgemeinen geht es um die Hierarchie von Klassen und dem Zugriff auf Instanzen von einer Klasse zur Anderen.
In einem Projekt möchte ich der Übersicht halber meine Listener selber, in separaten Klassen schreiben.
Somit benutze ich keine anonymen ad hoc Listener, und die geschriebenen Listener-Klassen sollen keine inneren Klassen der Gui-Klasse sein.
Solange ich meine Listener-Klassen als innere Klasse vom Gui schreibe, funktioniert alles wunderbar.
Dadurch wird aber der Programm-Code lang und unübersichtlich.
Mache ich die Listener-Klassen zu eigenständigen, wirds problematisch.
Ich gehe dabei folgendermassen vor:
Ich habe eine "Starter"-Klasse, welche nur die Main-Methode enthält.
Dort instanziere ich ein Gui-Objekt (JFrame) und mache es sichtbar.
Z.B: Gui fenster = new Gui("blabla");
Meine Gui-Klasse erbt von JFrame.
Im Konstruktor der Gui-Klasse baue ich dann die graphische Oberfläche auf, JPanels, JButtons, JLabels etc.
Dort instanziere ich auch meine Listener-Objekte und adde sie den entsprechenden Elementen zu.
Z.B.:
MeinSchalterListener druck1 = new MeinSchalterListener();
button1.addActionListener(druck1);
Neben dem Konstruktor enthält die Gui-Klasse noch die Getter und Setter-Methoden.
So weit so gut.
Das Gui steht, die Listener sind aktiv.
Wie kann ich jetzt aber in den Performer-Methoden der Listener auf die Instanzen / Methoden der Gui-Klasse zugreifen?
Die Instanz "fenster" ist aus den Listener-Methoden heraus nicht sichtbar.
Ich kann weder auf Gui-Elemente (wenn ich das Kapselung-Prinzip ignoriere), noch auf Getter und Setter der Gui-Klasse zugreifen, was kein Problem ist, solange die Lister-Klassen innere der Gui-Klassen sind.
Allgemein formuliert:
Wie können bei zwei eigenständigen Klassen die Methoden der einen auf die Instanzen der anderen zugreifen und das in beide Richtungen?
Ich konnte das nur realisieren, wenn beide Klassen innere Klassen einer äusseren Klasse waren.
Hoffe, dass das Problem auch ohne Code verständlich formuliert ist...
Bedanke mich für die Antworten