Problem mit ActionListener?

... komplette Frage anzeigen

1 Antwort

Genau,

Die Antwort von "MalNachgedacht" bringt es auf den Punkt. Die vier Referenzvariable "this.button", "this.button1", ... existieren gar nicht.

Ich schlage vier Möglichkeiten vor, diese Referenzvariable im Listener zu setzten. Siehe Delegationsattribut auf S. 68 und auf Seite 69 und 70 die Varianten A-D in dieser OO-Einführung:

http://www.programmieraufgaben.ch/uploads/oo.pdf

Es spielt keine Rolle, wo Du die Referenzvariable setzt (also mit der Zuweisung ... = new JButton()). Wichtig ist, dass alle Klassen, welche diese Objekte benötigen, auch eine Referenz auf diese Objekte kennen. Bei Listeners ist es standard, dass diese sog. Instanzvariable kennen, welche auf die selben Buttons "referenzieren", wie das Hauptprogramm. Diese Zuweisung kann mit einer der obigen Methoden A-D erreicht werden.

Natürlich könntest Du die Buttons auch im Listener erstellen, doch dann hast Du das Problem nur verlagert: Wie kann das Hauptprogramm denn nun auf die Buttons zugreifen (nur schon, um diese richtig zu positionieren); nun müsstest Du Referenzvariable im Hauptprogramm erstellen und diese zuweisen. Eine andere Variante wären auch "getter"-Methoden. Dann hat Dein Listener eine Methode "getButton(int richtung)" oder "getButton1(), ..." welche die erstellten Buttons zurückgeben.

Es ist übrigens nicht unüblich, dass das Hauptprogramm die Listener kennt und umgekehrt. Also oft wird die "Verlinkung" via Instanzvariable (welches in diesem Falle Referenzvariable sind) in beide Richtungen vollzogen wird.


Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?