In che senso? Nel costruttore del listener mi chiamo il JButton e fin qui non è un problema
Nel costruttore del listener tu non chiami nessuno JButton ma ti arriva l'iconea associato al JButton
L'errore sta in questo punto
codice:
for(int j=1;j<=posti;j++){
....
bPosto=new JButton(libero);
....
}
Cioè bPosto conterrà l'ultimo jbutton che crei, quindi quando poi verrà scatenato il listener e tu invochi "bPosto.setIcon" lo invochi appunto sull'ultimo bottone creato.
Ovviamente il bottone lo puoi passare al costruttore del listener:
codice:
class Seleziona implements ActionListener{
private char f;
private int p;
private Icon disp;
private JButton button;
public Seleziona(char f,int p,JButton button,Icon disp){
this.f=f;
this.p=p;
this.disp=disp;
this.button = button;
}
public void actionPerformed(ActionEvent e){
if(disp==libero)
button.setIcon(selezionato);
if(disp==selezionato)
button.setIcon(occupato);
}
}
//PASSAGGIO DEL VALORE NEL FORM
ActionListener listSelezione=new Seleziona(i,j,bPosto,bPosto.getIcon());
Inoltre volendo a questo punto potresti anche omettere di passare l'iconea che cmq ti potresti recuperare dal button passato.