Java permette anche di avere delle CLASSI ANONIME. Questo significa che puoi associare ad ogni pulsante un ActionListener dedicato anche senza conoscere a priori il numero di questi ActionListener.
Se devi, per esempio gestire k pulsanti puoi fare una cosa del genere: inserire questi k pulsanti in un array di k elementi e associare a ciascuno di questi un ActionListener:
A questo punto, puoi estendere la classe Button (o JButton) e fare in modo che abbia un indice interno leggibile tramite un metodo. Così puoi usare il tanto amato switch:codice:for (int i=0; i<k; i++) { pulsante[k].addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { gestisciPulsante(ae); } }); }
In questo modo dovrei aver risolto anche al tuo secondo problema (che era legatissimo al primo...).codice:public class MioBottone extends Button { private int indice; public MioBottone(int indice) { this.indice = indice; } public int getIndice() { return indice; } ... } public gestisciPulsante(ActionEvent ae) { MioBottone mb = ((MioBottone) ae.getSource()); switch (mb.getIndice()) { case 0: // primo pulsante (ma gli indici puoi sempre farli partire da 1) break; ... } }
Per il punto 3, a parte usare l'hashing come ti hanno già suggerito, non vedo altre soluzioni semplici.
Ciao.![]()



Rispondi quotando