[Java] final umgehen? *erledigt*

Tam

I am from Austria
ID: 264199
L
26 November 2006
90
7
ich habe folgenden code:

PHP:
import javax.swing.*;
import java.awt.event.*;

public class Main {
    public JButton[] b=new JButton[24];
    Main()
    {
        for(int i=0;i<24;i++)
        {
            b[i].addMouseListener(
                new MouseAdapter()
                {
                    public void mouseClicked(MouseEvent e)
                    {
                        b[i].setText("Test");
                    }
                }
                );
        }
    }
}
aber er mag das i in der methode mouseClicked nicht, weils nicht final is.

wortwörtlich schreibt er
Cannot refer to a non-final variable i inside an inner class defined in a different method
klar, ich könnte auch machen
b[0].addMouseListener (...);
b[1].addMouseListener (...);
b[2].addMouseListener (...);
...

aber gibts da nicht auch ne andere möglichkeit?
 
Zuletzt bearbeitet:
An das i kommst du nicht ran, da du ja in einer anderen Klasse bist.
Allerdings kannst du dir den JButton holen, indem du (JButton) e.getSource() machst ;)
 
aaaah, das MouseEvent hatt ich übersehen :biggrin:

aber irgendwie sitz ich immer noch auf der leitung.....
die mouseClicked methode sieht jz so aus:

Code:
public void mouseClicked(MouseEvent e)
{
	e.getSource();
	b[i].setText("Test");
}

so bringt es ja nichts, weil irgendwo muss ich das ja auch auffangen, aber wie? wenn ich sage b = (JButton) e.getSource(); mag er ja wiederum das i nicht.....
 
jou, so funktionierts :)

dankeschön :biggrin:


und wie kann ich jz in den titel "erledigt" reinschreiben?