2012-03-06 28 views
1

我试图使用可编辑的JComboBox,这样当用户键入编辑器时,可能的结果显示在组合框的列表部分。如何在不修改编辑器的情况下在JComboBox上使用addItem()?

不幸的是,我发现在使用addItem(item)getModel().addItem(item)时,用户键入的输入被我添加的第一个值覆盖。我考虑过存储编辑器的值,添加项目,然后使用setSelectedItem()来解决这个问题,但我不想保留任何选定的文本/插入位置的状态,并且认为这应该是更琐碎的事情,但不能为了我的生活,弄明白了。

JComboBox box = new JComboBox(); 
box.setModel(new MutableComboBoxModel()); 
box.setEditable(true); 
box.getEditor().getEditorComponent().addKeyListener(new KeyListener() { 
    public void keyPressed(KeyEvent e) { 

    } 

    public void keyReleased(KeyEvent e) { 
    } 

    public void keyTyped(KeyEvent e) { 
    // Actual results are retrieved from server via HTTP 
    box.addItem("Demo"); 
    // Here, the editor window the user was typing in is replaced with the value "Demo".. how to fix this? 
    } 
}); 

回答

0

您需要实现您自己的MutableComboBoxModel,因为DefaultComboBoxModel负责“添加项然后自动选择它”行为。

相关问题