Buonasera!!
Ho un pannello. Con un ciclo for ho creato 10 bottoni 'seleziona' e 10 'textBox' e li ho aggiunti al pannello. Premendo ogni bottone 'seleziona' si deve aprire un 'nuovoFrame' al quale viene aggiunto un 'nuovoPannello'. Questo 'nuovoPannello' contiene un gruppo di 'radioButton' il cui testo è impostato attraverso 'lista'.
L'utente per ogni bottone 'seleziona' che preme deve poter selezionare un solo 'radioButton' e cliccare sul bottone 'ok'. Il 'radioButton' selezionato deve essere inserito nel 'textBox' posizionato accanto al bottone 'seleziona'.
Ho pensato di fare così:
In questo modo 'funziona' tutto, ma viene impostato soltanto l'ultimo textBox, qualsiasi bottone 'seleziona' venga premuto. Come potrei risolvere?codice:// nel costruttore for(int j = 0; j <= 9; j++){ seleziona = new JButton("Seleziona"); pannello.add(seleziona); textBox = new JTextField("", 20); pannello.add(textBox); nuovoFrame = new JFrame(); nuovoPannello = new JPanel(); ok = new JButton("OK"); nuovoPannello.add(ok); buttonGroup = new ButtonGroup(); radioListener = new JRadioButtonListener(); buttonsListener = new GestoreBottoni(); buttonSelezionaListener = new JButtonSelezionaListener(); for(int i = 0; i<= 6; i++) { radioButton[i] = new JRadioButton(); radioButton[i].setText(String.valueOf(lista[i])); radioButton[i].addActionListener(radioListener); buttonGroup.add(radioButton[i]); nuovoPannello.add(radioButton[i]); } nuovoFrame.add(nuovoPannello); ok.addActionListener(buttonsListener); seleziona.addActionListener(buttonSelezionaListener); } private class GestoreBottoni implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == ok) { buttonGroup.clearSelection(); nuovoFrame.setVisible(false); } } } class JButtonSelezionaListener implements ActionListener { public void actionPerformed(ActionEvent e) { nuovoFrame.setVisible(true); } } class JRadioButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { String selezione = e.getActionCommand(); textBox.setText(selezione); } }
Grazie!

Rispondi quotando
