# Cannot refer to a non-final variable (JButton)



## BeSp (28. Mrz 2007)

Hallo,
ich habe folgenden Code produziert, wundere mich aber dass es so nicht erlaubt ist:


```
JButton button1 = new JButton("Hallo");
JButton button2 = new JButton("Grunz");
				
button1.addActionListener(new ActionListener()
{
	public void actionPerformed(ActionEvent ae)
	{
		button2.setText("Verändere Mich");
	}
});
```

Der compiler gibt folgendes aus:


> Cannot refer to a non-final variable bla inside an inner class defined in a different method



Dass diese Konstruktion nicht erlaubt ist mag sein. Auch dass man die Variablen als final bezeichnen muss damit das funktioniert. 

Wie ließe sich denn dieses Problem beheben _ohne_ final??

Gruß, G.


----------



## Marco13 (28. Mrz 2007)

Indem man "bla" (oder button2) als Variablen innerhalb der KLASSE deklariert (und nicht direkt in der Methode). Aber - ich würde das "final" vorziehen...


----------



## SlaterB (28. Mrz 2007)

oder eine finale Hilfsvariable verwenden;

final x = button1;

....

x.setText("Verändere Mich"); 

(natürlich schöner benannt als x)


----------



## BeSp (28. Mrz 2007)

Ich danke euch


----------

