私はいくつかのテキストフィールドと編集可能なJComboBox
を持つパネルを持っています。 Enterキーを押すと、下の検索ボタンを押すように、これらのすべてが機能するようにします。これはActionListener
のJTextField
で問題なく動作します。ただし、入力したときに検索を開始し、ドロップダウンリストが表示されないようにするには、JComboBox
に検索を開始する必要があります。私。ユーザーがドロップダウン内のオプションを選択するためにEnterキーを押した場合、何も起こらないはずです。編集可能なJComboBox:ドロップダウン選択でそれを無視している間にEnterを押すかどうかを決定しますか?
この動作の達成方法を教えてください。
イベントが発生すると、getActionCommand()
をチェックして、"comboBoxEdited"
または"comboBoxChanged"
のいずれかを表示しました。 "comboBoxEdited"
は、オプションを選択した後Enterを押すと、編集可能なフィールドでEnterキーを押したときに起動されます。 "comboBoxChanged"
は、オプション間を移動するときに起動され、"comboBoxEdited"
の直前だけでなく、テキストの編集後に入力を押すと起動されます。
私は以前のActionCommand
を保存した醜いハックを試みましたが、手動でテキストを入力した後に2回押す必要があるため、完璧ではありません。
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("comboBoxEdited") &&
!combohack.equals("comboBoxChanged")) {
combohack="";
//PERFORM SEARCH!
}
combohack=e.getActionCommand();
}
は、私は、さらに、実際の手紙どこが押されたときに、文字列をリセットするためにもKeyListener
を追加することによっても、醜い私のハックを作ってみましたが、それは助けにはなりませんでした。
アイデア?
フィールドの編集中に[Enter]を押したユーザーと、ドロップダウンからアイテムを選択したユーザーの違いは何ですか? – MadProgrammer
@MadProgrammerユーザーは、検索を実行する前に、他の検索フィールドにタブインして何かを入力することができます。矢印キーでオプションを選択すると[Enter]キーを押すのが自然です([Tab]キーを押すこともできます)。アプリケーションはマウスを使用するためのものではありません。 – Kilgore