我在 中编写 Bing/Googleinstant search
类型的功能combo box
,因此此组合框根据用户输入的内容向用户提供建议。该程序就像一个魅力,但它们是一个我无法弄清楚如何解决的错误。问题是,一旦键入第二个字符,就会识别键入的第一个字符,字符的其他位置也是如此。
这是代码:
public MyClass extends JFrame
{
private Document doc;
public MyCode()
{
comboxBox= new JComboBox();
Handler handle = new Handler();
JTextComponent comp = (JTextComponent) comboBox.getEditor().getEditorComponent();
doc = comp.getDocument().addDocumentListener(handle);
comboBox.addKeyListener(handle);
}
private class Handler implements DocumentListener,KeyListener
{
String dataTobeSearched= "";
@Override
public void changedUpdate(DocumentEvent event) {
try
{
dataTobeSearched = doc.getText(0, doc.getLength());
System.out.println("Data to be searched "+dataTobeSearched);
}
catch(Exception e)
{
e.printStackTrace();
}
}
@Override
public void keyPressed(KeyEvent event) {
changedUpdate(null);
}
}
我究竟做错了什么?
我将 keyListener 添加到组合框编辑器中,因为在DocumentListener
组合框中键入内容时没有调用它?如果还有其他简单的替代方法,请分享。
我该如何解决上述问题?