2009-11-24 74 views
1

如果用戶選擇其索引爲1的項目,並將其從「123」更改爲「abcd」。如何設置「abcd」而不是「123」(在NetBeans中)?另外我怎樣才能永久刪除該項目?可編輯JComboBox

+0

你說的一套 「ABCD」 的意思。你想改變模型的價值嗎?如果是這樣,你使用什麼模型? – 2009-11-24 12:12:49

+0

我的意思是我想永遠改變「123」到「abcd」。 還我使用默認的模型,並用setEditable(真)我做它既然你不讀你的其他帖子給出的建議,這似乎有待時間來提出一個建議在此張貼的浪費可編輯ComboBox – Johanna 2009-11-24 12:21:23

+0

。 – camickr 2009-11-24 16:53:44

回答

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 2009-11-25 03:47:38

+0

您可以自行調試代碼以查看發生了什麼! – camickr 2009-11-25 04:49:26

+0

不確定何時刪除該行... 如果要在用戶清除輸入時刪除它,請在重新添加元素之前檢查該元素 – 2009-11-25 09:23:55