我寫冰/谷歌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