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
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();
}
}
il secondo listener modifcherà la lista, il primo solo l'elemento selezionato.