我写冰/谷歌instant search
样的特征在combo box
,所以这个组合框提供建议,根据他所键入的用户。该程序的作用像一个魅力,但他们是一个错误,我无法找出如何解决。问题是,键入的第一个字符在键入字符后第二个字符被识别,字符的其他位置也一样。文件没有更新的组合框的Java
下面是代码:
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
未被调用?如果还有其他简单的替代方案,请分享。
我该如何解决上述问题?
是什么呢? –
它确保在EDT上创建/更新GUI类。有关更多详细信息,请参见[Swing中的并发](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 –
在事件处理的长度可以反映错误值,因为事件处理正在进行中。在Document中反映的更改后使用呼叫来调用您的代码。 – StanislavL