jComboBox编辑器返回空String

时间:2013-02-04 14:41:29

标签: java string swing jcombobox

我写了一个自动完成组合框程序,在其中我搜索用户在文件中输入的单词。该程序工作正常,但是combobox editor在输入内容时不会返回任何内容。我不知道为什么会这样......这是处理问题的代码块。

// in GUI class constructor
    InstantSearchBox = new JComboBox();
    InstantSearchBox.setEditable(true);

    /*****/
    KeyHandler handle = new KeyHandler();

    InstantSearchBox.getEditor().getEditorComponent().addKeyListener(handle);


// Keylistener class (KeyPressed method)
try
{
    dataTobeSearched = InstantSearchBox.getEditor ().getItem ().toString ();

    // the string variable is empty for some reason
    System.out.println ("Data to be searched " + dataTobeSearched); 
}
catch (NullPointerException e)
{
    e.printStackTrace ();
}

此致

3 个答案:

答案 0 :(得分:2)

不要使用KeyListener。在生成keyPressed事件时,键入的文本未添加到文本字段中。

检查文本字段更改的更好方法是将DocumentListener添加到文本字段的Document中。有关详细信息,请参阅How to Write a Document Listener上Swing教程中的部分。

答案 1 :(得分:1)

你应该使用

dataTobeSearched = (String) InstantSearchBox.getSelectedItem();
尽管名称如此,但对于可编辑的组合框,此方法只返回输入的文本。

编辑器仅在JComboBox内部使用,以便在输入时临时捕获输入。键入后,编辑器将被清除,文本将传回组合框模型。

这允许编辑器同时在多个组合框之间共享 - 它们只需在需要时跳入,捕获输入,再次跳回并在编辑完成时清除。

答案 2 :(得分:0)

使用InstantSearchBox.getSelectedItem()代替InstantSearchBox.getEditor().getItem()