私はBing/Googleinstant search
のような機能をで書いてcombo box
いるので、このコンボボックスは、ユーザーが入力した内容に基づいてユーザーに提案を提供します。プログラムは魅力のように機能しますが、それらは私が解決する方法を理解できない1つのバグです。問題は、最初に入力された文字が2番目に入力された文字として認識されることです。これは、他の文字の位置にも当てはまります。
コードは次のとおりです。
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);
}
}
私は何が間違っているのですか?
DocumentListener
コンボボックスに何かが入力されているときにが呼び出されなかったため、keyListenerをコンボボックスエディターに追加しましたか?これに代わる簡単な方法が他にある場合は、それを共有してください。
上記の問題をどのように解決できますか?