[Java] Array di JButton

Messaggioda simoorusso » 06/05/2018, 14:13

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?
Codice:
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...]
}
simoorusso
New Member
New Member
 
Messaggio: 26 di 87
Iscritto il: 25/11/2016, 14:27

Re: [Java] Array di JButton

Messaggioda apatriarca » 07/05/2018, 00:22

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.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5044 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite