所以我有2 Spinner
s,windVelSpinner
和launchTubeSpinner
。他们在Key Pressed Actions上有以下内容(我正在使用场景构建器):windSpinAction
和launchSpinAction
就是我所说的。这是windSpinAction
方法:
@FXML
void windSpinAction(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.ENTER)) {
launchTubeSpinner.requestFocus();
} // end if statement
当我运行程序并点击时输入,而焦点在windVelSpinner
时没有任何反应。但如果我按 shift + 输入,它会将焦点移至launchSpinAction
。为什么会这样,我该如何解决这个问题呢?提前谢谢!
答案 0 :(得分:1)
这与按 shift 无关。由于您使用了onKeyPressed
个事件,因此事件会在第一个Spinner
上触发,这会使第二个Spinner
在按下按键时获得焦点,因此第二个Spinner
会收到也是事件,第一个Spinner
再次获得焦点,再次接收事件,将焦点再次更改为第二个Spinner
等等......
结果是焦点在Spinner
s之一或多或少随机结束。
使用每次按键仅触发一次的onKeyReleased
事件。
如果您有可编辑的Spinner
s并希望在用户输入后更改焦点,请使用onAction
的editor
事件代替Spinner
上的关键事件}。
windVelSpinner.getEditor().setOnAction(e -> {
launchTubeSpinner.requestFocus();
});
(在initialize
方法中)