2012-03-06 63 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負責「添加項然後自動選擇它」行爲。

相關問題