Ciao, io ho un panel con più JButton che devono fare cose analoghe quando vengono cliccati. Più precisamente, quando viene schiacciato un bottone, il valore della sua JLabel dovrebbe venir scritta nel JTextField, che è unico per tutti i bottoni. Quindi ho creato un array di bottoni....insomma, tutto va bene fino la parte degli eventi. Ho provato ad associare l'evento click col ciclo (for) dove ad ogni iterazione del ciclo, ad un bottone dell'array viene associato il ActionListener e tutte le cose che servono per azionare l'evento. Ora il problema è che,si, mi associa un listener ad ogni bottone, però non mi manda il valore corrispondente della label nel textfield, ma mi manda in ArrayIndexOutOfBounds Exception, perchè vuole prendere il valore del elemento dell'array sul quale punta appena uscito dal for. Il codice sarebbe questo:
private void defineActions(){
for (k=0;k<j;k++){
bLine[k].addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent event){
request.setText(bLine[k].getText());
}});
}}
bLine è l'array di JButton di "j" elementi
request è il JTextField dove dovrebberò venir stampati i JLabel.
Secondo me lo fa perchè mi crea 1 OGGETTO ActionListener e lo associa a tutti i bottoni.
Penso che debba esistere un modo per non dover scrivere il codice analogo per ogni singolo bottone.
Se qualcuno mi può aiutare, ne sarei molto grata.

Rispondi quotando