[Java] Array di JButton
Sto sviluppando un programma in cui ho la necessita di mettere più JButton con la stessa etichetta, in particolare si tratta di poter scegliere la path di una o più foto tramite un JFileChooser. Ad ogni JButton corrisponde una label che mostra il percorso scelto. Il problema è come faccio a dire al listener quale bottone in particolare è stato premuto?
public class ModificaProdottoFrame extends JFrame{ Prodotto prodotto = (Prodotto) SessionManager.getInstance().getSESSION().get("prodottoSelezionato"); private JTextField txtNome = new JTextField(); private JTextField txtPrezzo = new JTextField(); private JTextField txtDescrizione = new JTextField(); private JTextField txtPercSconto = new JTextField(); private JCheckBox CBDisponibile = new JCheckBox(); private String[] nomiReparti = RepartoBusiness.getInstance().trovaNomeTuttiIReparti(); private JComboBox<String> CBReparti = new JComboBox<>(nomiReparti); private JComboBox<String> CBCategorie = new JComboBox(); private String[] produttori = ProduttoreBusiness.getInstance().trovaNomeTuttiIProduttori(); private JComboBox<String> CBProduttore = new JComboBox(produttori); private String[] distributori = DistributoreBusiness.getInstance().trovaNomeTuttiIDistributori(); private JComboBox<String> CBDistributore = new JComboBox(distributori); private Foto foto = FotoBusiness.getInstance().trovaFotoByIdProdotto(prodotto.getIdProdotto()); private ArrayList<String[]> path = foto.getListaFoto(); private JLabel[] lblPath = new JLabel[5]; public ModificaProdottoFrame(ArrayList<Prodotto> listaProdottiTemp){ super("Modifica il Prodotto"); ModificaProdottoListener listener = new ModificaProdottoListener(this); Container c = getContentPane(); JPanel nord = new JPanel(); JPanel centro = new JPanel(); JPanel sud = new JPanel(); JPanel sudEst = new JPanel(); JPanel sudOvest = new JPanel(); c.setLayout(new BorderLayout()); centro.setLayout(new GridLayout(12, 2)); sud.setLayout(new GridLayout(1,2)); sudOvest.setLayout(new BorderLayout()); sudEst.setLayout(new GridLayout(5,3)); c.add(nord, BorderLayout.NORTH); c.add(centro, BorderLayout.CENTER); c.add(sud, BorderLayout.SOUTH); sud.add(sudOvest); sud.add(sudEst); JButton[] btnSfoglia = new JButton[5]; JButton[] btnEliminaFoto = new JButton[5]; int i = 0; while (i<5){ btnSfoglia[i]= new JButton("Sfoglia"); btnEliminaFoto[i] = new JButton("X"); btnSfoglia[i].addActionListener(listener); btnSfoglia[i].setName("path1"); btnEliminaFoto[i].addActionListener(listener); if(i>path.size()-1) { lblPath[i] = new JLabel(""); } else { lblPath[i] = new JLabel(path.get(i)[1]); } i++; } i=0; while (i<5){ sudEst.add(btnSfoglia[i]); sudEst.add(lblPath[i]); sudEst.add(btnEliminaFoto[i]); i++; } [getter e setter delle vari variabili...] }
Risposte
Di solito c'è un metodo della classe evento per ottenere la classe che ha causato l'evento (e quindi il bottone nel tuo caso). E' da un po' che non uso Java, ma da una veloce ricerca vedo che la classe ActionEvent ha un metodo getSource che dovrebbe fare al caso tuo.