在另一个微调器上按下回车键后,如何请求对微调器进行聚焦

时间:2016-03-31 22:20:16

标签: java javafx focus spinner

所以我有2 Spinner s,windVelSpinnerlaunchTubeSpinner。他们在Key Pressed Actions上有以下内容(我正在使用场景构建器):windSpinActionlaunchSpinAction就是我所说的。这是windSpinAction方法:

@FXML
void windSpinAction(KeyEvent ke) {
    if (ke.getCode().equals(KeyCode.ENTER)) {
        launchTubeSpinner.requestFocus();
    } // end if statement

当我运行程序并点击时输入,而焦点在windVelSpinner时没有任何反应。但如果我按 shift + 输入,它会将焦点移至launchSpinAction。为什么会这样,我该如何解决这个问题呢?提前谢谢!

1 个答案:

答案 0 :(得分:1)

这与按 shift 无关。由于您使用了onKeyPressed个事件,因此事件会在第一个Spinner上触发,这会使第二个Spinner在按下按键时获得焦点,因此第二个Spinner会收到也是事件,第一个Spinner再次获得焦点,再次接收事件,将焦点再次更改为第二个Spinner等等......

结果是焦点在Spinner s之一或多或少随机结束。

使用每次按键仅触发一次的onKeyReleased事件。

如果您有可编辑的Spinner s并希望在用户输入后更改焦点,请使用onActioneditor事件代替Spinner上的关键事件}。

windVelSpinner.getEditor().setOnAction(e -> {
    launchTubeSpinner.requestFocus();
});

(在initialize方法中)