PDA

View Full Version : [Java] Passaggio valori classe interna


Raziel86
15-02-2011, 14:59
Salve a tutti,

Questo è il mio codice:


public void Setta(int i, int j)
{
class Colore implements ActionListener
{
private int n=0;
public void actionPerformed(ActionEvent event)
{
if (n==0||n==3)
{
a[i][j].setBackground(Color.green);
n=0;
}
else if (n==1)
a[i][j].setBackground(Color.orange);
else if (n==2)
a[i][j].setBackground(Color.red);
n++;
}
}
ActionListener listener = new Colore();
a[i][j].addActionListener(listener);
}

a[i][j] è una matrice di JButton che voglio colorare quando ci clicco sopra
Se clicco 0 volta o più di 2 volte, il pulsante deve ridiventare verde altrimenti arancione per 1 click e rosso per 2 click.

Problea:
non riesco a richiamare setBackground sul pulsante indicato da i e j perchè ovviamente li passo al metodo e non alla classe interna.

Come posso risolvere?
Forse è di una semplicità assurda, ma non ci arrivo.
Grazie x l'aiuto ^^

banryu79
16-02-2011, 10:09
Problea: non riesco a richiamare setBackground sul pulsante indicato da i e j perchè ovviamente li passo al metodo e non alla classe interna.

Potresti dotare la tua classe interna Colore di un costruttore che accetta un JButton come parametro; a quel punto postresti fare direttamente riferimento al JButton internamente a Colore, e per creare una nuova istanza di Colore per un JButton della matrice faresti:

...
JButton b= a[i][j];
ActionListener listener = new Colore(b);
b.addActionListener(listener);