入力または選択によってテキストが変更されるたびに何らかのアクションを実行したい編集可能な JComboBox があります。この場合、テキストはパターンであり、パターンが有効であることを確認し、テスト データに一致するものを表示したいと考えています。
明らかなことを行って、ActionHandler をアタッチすると、入力に関しては、せいぜい (選択は問題ありません)、イベントが信頼できないように発生するように見えることがわかりました。そして、入力の結果として発火した場合、 (getSelectedItem() はリストから選択されたときにのみテキストを取得するため、getEditor().getItem() を使用して) 取得されたテキストは、最後のイベントが発生しました - つまり、アクション イベントが発生する直前に入力された文字が常に欠落しています。
少しの遅延 (500 ミリ秒から 1 秒) の後にアクション イベントが発生することを期待していましたが、キーを押すとすぐに発生するようです (発生した場合)。
私が考えることができる唯一の実行可能な代替手段は、フォーカスが得られたときに1秒のタイマーを開始し、フォーカスが失われたときにそれを終了し、コンテンツが前回と異なる場合はタイマーアクションとして作業を行うことです.
何か考えや提案はありますか?
コード スニペットは特に興味深いものではありません。
find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
System.out.println("Find: "+find.getEditor().getItem());
}