2017-02-17 13 views
2

ユーザーがコンボボックスでEnterキーを押すと、フォーカスを変更したい。まず、アクションリスナーを使用しましたが、矢印キーを上下に押したり、ドロップダウンで値を選択したりすることでユーザーが値を変更したときにもトリガーされます。JavaFX Combobox:入力用に押されたキーを処理する

したがって私はキーハンドラを登録することで解決できると思っていました。しかし、ENTERキーでは機能しません。

問題を解決する方法はありますか?

編集:

申し訳ありません、私は自分のイントロが十分だと思いました。

だから私はいくつかのテキストフィールドとcomboBoxのフォームを持っています。ユーザビリティを高めるために、ユーザは次のフィールドに切り替えるためにEnterキーを押すだけでよい。

textfield.setOnAction(e -> { 
     cmbTax.requestFocus(); 
}); 

しかし、私はアクションリスナーを登録する場合は、値が変更されたとき、それは常にトリガされますので、それは、私の要件を満たしていないだろう:これは、テキストフィールドのための素晴らしい作品

cmbTax.setOnAction(e->textfield2.requestFocus()); 

だから、私が試しましたキーリスナーが、私のリスナーが呼び出されることになる前に、それが内部処理されるためには、ENTERに反応しなかった。

cmbTax.getEditor().setOnKeyPressed(this::handleKeyPressedForComboBox); 

よろしく

+1

ポスト[MCVE]は、あなたがこれまでに行って、あなたが問題を抱えているところdescibeているかを示します。 – MBec

答えて

1

これが私の作品:

setOnKeyPressed(e -> { 
    if (e.getCode() == KeyCode.ENTER) { 
     System.out.println("TEST"); 
    } 
}); 

をお使いの場合:

cmbTax.setOnKeyPressed(this::handleKeyPressedForComboBox); 
+0

ありがとう、これは私の問題を解決します。しかし、私はそれが非常に奇妙な行動だと思う。私はエディタにキーリスナーを登録しました。これはまた、押されている矢印キーを聴きたいので、これは機能しませんでした。しかし、私は最後に2回それを登録しました。 – marky8264

関連する問題