Originariamente inviato da denis_roy
Per favore evita di attaccare con frasi "è privo di senso" perchè ha senso, piuttosto dimmi, non ho capito...
Garantisco sul mio onore: ciò che stai facendo non ha proprio alcun senso. Non lo dico io, lo dice Java... Senza offesa, eh...
Comunque ho una matrice di pulsanti.
Non do a nessuno un nome, ma gli do solo un icona.
E fin qui ok. Non vedo il codice in cui tu lo fai, ma mi sta bene.
Ora se ad ognuno gli aggiungo un listener, xcio "addActionListener..."
posso occuparmi di quel che succede a ogni pulsante quando lo clicco.
Ok, ma devi aggiungere un ActionListener, non una stringa... e tu stai aggiungendo una stringa (la concatenazione di più stringhe, per la precisione... e te lo dice anche il compilatore).
Ma come faccio a capire che ho cliccato il pulsante alla posizione 0-4 della matrice?
Appunto gli vorrei passare quel codice di prima a ogni pulsante con la relativa posizione.
Se ogni pulsante lo chiamo come le posizioni(es: 0-0. 0-1. 0-2....) e gli dico
addActionListener(this), mi prende come evento 0-0 ed è quello che voglio.
Ok, la problematica è più chiara.
Quello che vuoi fare tu è assegnare a ciascun pulsante un ActionListener diverso.
E lo si può fare.
Se vuoi avere un indice, ad esempio, puoi costruire una tua classe, che implementa ActionListener e che prende l'indice nel costruttore.
Esempio veloce:
codice:
public class TuaClasse implements ActionListener {
private int i, j;
public TuaClasse(int i, int j) { this.i = i; this.j = j;}
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null, "E' stato premuto il pulsante " + i + ", " + j, "Titolo");
}
}
Quindi usare questo come ActionListener:
codice:
buttons[i][j].addActionListener( new TuaClasse(i,j) );
Ciao.