0

ユーザーがファイル内に入力した単語を検索するオートコンプリートコンボボックスプログラムを作成しました。プログラムは正常に動作します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 ();
}

よろしく

4

3 に答える 3

2

KeyListenerを使用しないでください。keyPressedイベントが生成されたときに、入力されたテキストがテキストフィールドに追加されていません。

テキストフィールドへの変更を確認するためのより良い方法は、テキストフィールドのドキュメントにDocumentListenerを追加することです。詳細については、Swingチュートリアルのドキュメントリスナーの作成方法に関するセクションを参照してください。

于 2013-02-04T15:34:52.397 に答える
1

あなたは使用する必要があります

dataTobeSearched =(String)InstantSearchBox.getSelectedItem();
その名前にもかかわらず、編集可能なコンボボックスの場合、このメソッドは入力されたテキストを返すだけです。

エディターは、入力時に入力を一時的にキャプチャするためにJComboBoxによって内部的にのみ使用されます。入力すると、エディターがクリアされ、テキストがコンボボックスモデルに転送されます。

これにより、エディターを複数のコンボボックス間で一度に共有できます。エディターは、必要なときにジャンプして入力をキャプチャし、再びジャンプして、編集が終了したらクリアします。

于 2013-02-04T14:53:26.543 に答える
0

InstantSearchBox.getSelectedItem()の代わりに使用してくださいInstantSearchBox.getEditor().getItem()

于 2013-02-04T14:52:44.660 に答える