2009-11-24 4 views
1

Если пользователь выбирает элемент с его индексом 1 и меняет его с «123» на «abcd». Как я могу установить «abcd» вместо «123» (в NetBeans)? Также как я могу удалить элемент навсегда?Редактируемый JComboBox

+0

Что вы имеете в виду множества "ABCD". Вы хотите изменить значение в своей модели? Если да, то какую модель вы используете? –

+0

Я имею в виду, что я хочу изменить «123» на «abcd», навсегда. также я использую модель по умолчанию и с setEditable (true) Я делаю это как редактируемый ComboBox – Johanna

+0

Учитывая, что вы не читаете предложения, приведенные в других ваших сообщениях, казалось бы, пустая трата времени, чтобы сделать предложение в этой публикации. – camickr

ответ

1

Попробуйте следующее. Когда пользователь меняет значение и нажимает [ENTER], старое значение удаляется, а новый добавляется.

Если вам нужно заменить значение в том же положении, вам придется предоставить свою собственную модель, которая поддерживает добавление значений в определенную позицию.

final DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] {"Red", "Green", "Blue"}); 

comboBox = new JComboBox(model); 
comboBox.setEditable(true); 
comboBox.addActionListener(new ActionListener() { 
    private int selectedIndex = -1; 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     int index = comboBox.getSelectedIndex(); 
     if(index >= 0) { 
      selectedIndex = index; 
     } 
     else if("comboBoxEdited".equals(e.getActionCommand())) { 
      Object newValue = model.getSelectedItem(); 
      model.removeElementAt(selectedIndex); 
      model.addElement(newValue); 
      comboBox.setSelectedItem(newValue); 
      selectedIndex = model.getIndexOf(newValue); 
     } 
    } 
}); 
comboBox.setSelectedIndex(0); 
+0

Ницца! но с вашим кодом я могу удалить один элемент не более того, почему? – Johanna

+0

Вы можете самостоятельно отлаживать код, чтобы узнать, что происходит! – camickr

+0

Не уверен, когда вы хотите удалить строку ... Если вы хотите удалить ее, когда пользователь очистит вход, проверьте это до повторного добавления элемента –

0

Читать учебник How to Use Combo Boxes

Editable combo box, before and after the arrow button is clicked http://java.sun.com/docs/books/tutorial/figures/uiswing/components/EditableComboBoxMenuMetal2.png

Редактируемый выпадающий, до и после того, как кнопку со стрелкой нажата

См: Использование раздел Редактирования Combo Box ,

Отрывок с этой страницы:

JComboBox patternList = new JComboBox(patternExamples); 
patternList.setEditable(true); 
patternList.addActionListener(this); 
Смежные вопросы