1

このコードは私がやりたいことです。編集可能な ComboBox に入力しているときに、ENTER を解放してその入力イベントを処理したいと考えています。しかし、アプリケーションが応答できず、メッセージが出力されませんでした。基本的に同じコードをテキスト ボックスに書きましたが、問題なく動作し、メッセージが出力されました。ComboBox の KeyReleased イベントのハンドラーも作成しましたが、これも正常に機能し、メッセージが出力されました。難点はエンターキー。このコードが、編集可能な ComboBox で必要な処理を実行しないのはなぜですか?

@FXML
ComboBox comboBox;

public class ScreenController implements Initializable {

    @Override
    public void initialize(...) {
        ...
        comboBox.setOnKeyReleased(new EventHandler<KeyEvent>() {

            @Override
            public void handle(KeyEvent ke) {
                if (ke.getCode == KeyCode.ENTER) {
                    System.out.println("ENTER was released");
            }
            }
        }); 
    }
}
4

2 に答える 2

2

私は同じバグ/機能に苦しんでいました。幸いなことに、この投稿を見つけました 。解決策は、 経由でハンドラーを登録しないことcomboBox.setOnKeyReleased()です。代わりに、EventFilter を使用します。

comboBox.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent ke) {
            if (ke.getCode == KeyCode.ENTER) {
                System.out.println("ENTER was released");
            }
        }
 });

これは実際に期待どおりに機能します。

于 2014-08-24T14:13:45.187 に答える