lokale Variable innerhalb "actionPerformed()"

aha_01

Aktives Mitglied
Hi,
ich möchte eine lokale Variable innerhalb der Funktion "actionPerformed" benutzen (Siehe Code snippet)
Java:
public void doSomething(){
     int ctr_var = 0;
    //...
    ActionListener displaySomething_listener;
    displaySomething_listener = new ActionListener(){
 	public void actionPerformed(ActionEvent e){
           // Hier möchte ich die Variable ctr_var abfragen und entsprechend setzen	    			
        }
   };
//...
Hat jmd ne Idee ???:L

Danke im Voraus, Grüße 🙂
Aha
 
Probier mal die Variable
Code:
ctr_var
mit nem
Code:
final
zu deklarieren.
Ums dann zu setzen kannste ja in der actionPerformed() ne neue Variable machen und dort den Wert einspeichern...
 
Probier mal die Variable
Code:
ctr_var
mit nem
Code:
final
zu deklarieren.
Dann wäre der Counter allerdings unveränderlich, was sich mit einem Counter irgendwie nicht ganz so gut verträgt.😀
Deklariere ctr_var als Klassenvariable, dann ist der Zugriff aus dem ActionListener heraus möglich. Alternativ könntest du den ActionListener als eigene Klasse formulieren, die intern über einen Zähler verfügt.
 
Setzen kannst du die Variable dort nicht. Dazu muss sie eine Instanzvariable der Klasse sein. Macht auch anders keinen sinn, weil man an den gesetzten Wert ja sonst nicht mehr drankommt...
 
Nicht hypsch, funzt aber:

Java:
public void doSomething(){
    final int[] ctr_var = new int[1];
    //...
    ActionListener displaySomething_listener;
    displaySomething_listener = new ActionListener(){
    public void actionPerformed(ActionEvent e){
           // Hier mit ctr_var[0] arbeiten             
        }
   };
 
Sicher funktioinert das, aber auch mit dieser Variablen kann man dann nichts anfangen - Außer in einer anonymen Klasse, der in der gleichen Methode erstellt wird - Und ansonsten könnte man die Variable einfach mit in die anonyme Listener-Klasse mit reinziehen, dann spart man sich alle finals und Array-Workarounds... :bahnhof:
 
Das stimmt nicht ganz. Z.B. könnte man ctr_var[] in doSomething zwei Listenern mitgeben. Man kann ctr_var[] auch als Rückgabewert zurückgeben, und dann dabei zugucken, wie der Wert sich erhöht. Aber zugegeben, häßlich ist es trotzdem.
 
Danke an alle und besonders an Landei weil ich seine Lösung genommen habe:
Grund:
ich hätte auch die Variable als Klassenvariable deklarieren können aber dies ist für mein Programm nicht Speicherschohnend weil so wird der Speicher immer belastet sobald ich die Klasse initialisiere 🙂
Mit der Lösung von Landei wird der Speicher erst belastet wenn ich die betroffene Methode aufrufe und das finde ich gut :toll:

Danke für euch alle nochmal
Aha
 

Zurück
Oben