EventListener

Status
Nicht offen für weitere Antworten.
P

papahuhn

Gast
Hallo,

ich habe eine Frage zur Benutzung von Listenern.
Angenommen ich möchte, dass wenn jemand einen Button drückt, gewisse Daten verarbeitet werden. Zum Beispiel soll beim Drücken ein Counter hochgezählt, und irgendwo anders ausgegeben werden. Bis jetzt habe ich die ActionListener als anonymes Objekt an den Button übergeben:

Code:
ActionListener listener = new ActionListener()
{
        public void actionPerformed(ActionEvent e)
        {
                do_something();
        }
};
button.addActionListener(listener);


Das Problem dabei ist, dass ich alle Variablen die außerhalb des ActionListeners existieren und die ich auslesen möchte, als final deklarieren muss.
Das ging bisher noch. Aber nun möchte ich die externen Werte auch verändern können, und das geht mit final gar nicht.
Was muss ich also tun?

Danke.
 

Xandro

Bekanntes Mitglied
Korrekt, das funktioniert mit final gar nicht, da diese Variable nur 'einmalig' genutzt werden kann.

Aber wieso kannst Du die anderen Variablen nur als final deklarieren?
Was kommt denn für eine Fehlermeldung, wenn Du es nicht machst?
 
P

papahuhn

Gast
Du liebe Güte,

ich kann tatsächlich auf die Objektvariablen der Überklasse zugreifen; sogar wenn sie private sind.
Damit hat sich das Problem ziemlich in Luft aufgelöst.
Das ist mir bis jetzt nicht aufgefallen, weil ich eigentlich gewohnt bin, Objektvariablen mit this.variable anzusprechen.
Und weil der neue EventListener eine eigene Klasse ist, hat this eine andere Bedeutung.

Danke sehr, damit komme ich weiter.

@Xandro:
Eclipse gibt folgenden Hinweis:
Cannot refer to a non-final variable right inside an inner class defined in a different method
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben