anch'io la vedo come interarte, dovresti sfruttare l'editabilità della combo direttamente... comunque se per ragioni tue non puoi/vuoi, devi mettere mano al model della combo
il secondo listener modifcherà la lista, il primo solo l'elemento selezionato.codice:import java.awt.event.*; import java.awt.*; import javax.swing.*; /** * * @author Andrea */ public class JComboJText extends JFrame { private class JComboBoxListener implements ActionListener { public void actionPerformed(ActionEvent ae) { mytext.setText((String)mycombo.getSelectedItem()); } } //questo modificherà solamente l'elemento "a vista" private class JButtonListener implements ActionListener { public void actionPerformed(ActionEvent ae) { mycombo.setEditable(true); mycombo.setSelectedItem(mytext.getText()); mycombo.setEditable(false); } } //questo modificherà la lista vera e propria private class JButtonListener2 implements ActionListener { public void actionPerformed (ActionEvent ae) { DefaultComboBoxModel model = (DefaultComboBoxModel)mycombo.getModel(); int index = model.getIndexOf(model.getSelectedItem()); model.insertElementAt(mytext.getText(), index); model.removeElementAt(index+1); } } private JComboBox mycombo; private JTextField mytext; private JButton mybutton; private int index; /** Creates a new instance of JComboJText */ public JComboJText() { super("Demo"); this.setSize(400,80); this.getContentPane().setLayout(new GridLayout(1,3)); mycombo = new JComboBox(new String[] {"", "Pippo", "Pluto", "Paperino", "Topolino"}); mycombo.addActionListener(new JComboBoxListener()); mytext = new JTextField(); mybutton = new JButton("Modifica"); mybutton.addActionListener(new JButtonListener()); this.getContentPane().add(mycombo); this.getContentPane().add(mytext); this.getContentPane().add(mybutton); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new JComboJText(); } }

Rispondi quotando