我試圖使用可編輯的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?
}
});