2012-03-06 19 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

DefaultComboBoxModelは「アイテムを追加してから自動選択する」動作を担当するため、独自のMutableComboBoxModelを実装する必要があります。

関連する問題