JavaFX Combobox:处理按下输入键

时间:2017-02-17 20:12:49

标签: javafx event-handling javafx-8

如果用户在组合框中按ENTER键,我想更改焦点。首先,我使用了一个动作监听器,但当用户通过向上或向下按箭头键或在下拉列表中选择值来更改其值时,也会触发此操作。

因此我认为我可以通过注册密钥处理程序来解决这个问题。但它对ENTER键不起作用。

有没有办法解决我的问题?

编辑:

抱歉,我认为我的介绍就足够了。

所以我对一些textfields和一个comboBox的形式很少。为了提高可用性,用户只需按Enter即可切换到下一个字段。这适用于文本字段:

args

但是如果我注册一个动作监听器,它就不能满足我的要求,因为它会在值改变时被触发:

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

所以我尝试了一个关键的监听器,但是它没有对ENTER作出反应,因为它是在我的监听器被调用之前在内部处理的:

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

问候

1 个答案:

答案 0 :(得分:1)

这对我有用:

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

在你的情况下:

cmbTax.setOnKeyPressed(this::handleKeyPressedForComboBox);