在不同的微调器上按下回车键后如何请求关注微调器
How to request focus on spinner after pressing the enter key on a different spinner
所以我有 2 个 Spinner
,windVelSpinner
和 launchTubeSpinner
。他们在按键操作上有以下内容(我正在使用场景生成器):windSpinAction
和 launchSpinAction
是我对它们的称呼。这是 windSpinAction
方法:
@FXML
void windSpinAction(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.ENTER)) {
launchTubeSpinner.requestFocus();
} // end if statement
当我 运行 程序并点击 enter 而焦点在 windVelSpinner
上时没有任何反应。但是如果我点击 shift+enter 它会将焦点移动到 launchSpinAction
。为什么会这样,我该如何解决?提前致谢!
这与是否按shift无关。由于您使用 onKeyPressed
事件,因此事件会在第一个 Spinner
上触发,这使得第二个 Spinner
在仍按下键时接收焦点,因此第二个 Spinner
接收事件也是如此,第一个 Spinner
再次获得焦点,它再次接收事件,再次将焦点更改为第二个 Spinner
,依此类推...
结果是焦点在 Spinner
之一处或多或少随机结束。
改为使用每次按键仅触发一次的 onKeyReleased
事件。
如果您有可编辑的 Spinner
并希望在用户输入后更改焦点,请使用 onAction
event of the editor
而不是 Spinner
上的按键事件。
windVelSpinner.getEditor().setOnAction(e -> {
launchTubeSpinner.requestFocus();
});
(在initialize
方法中)
所以我有 2 个 Spinner
,windVelSpinner
和 launchTubeSpinner
。他们在按键操作上有以下内容(我正在使用场景生成器):windSpinAction
和 launchSpinAction
是我对它们的称呼。这是 windSpinAction
方法:
@FXML
void windSpinAction(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.ENTER)) {
launchTubeSpinner.requestFocus();
} // end if statement
当我 运行 程序并点击 enter 而焦点在 windVelSpinner
上时没有任何反应。但是如果我点击 shift+enter 它会将焦点移动到 launchSpinAction
。为什么会这样,我该如何解决?提前致谢!
这与是否按shift无关。由于您使用 onKeyPressed
事件,因此事件会在第一个 Spinner
上触发,这使得第二个 Spinner
在仍按下键时接收焦点,因此第二个 Spinner
接收事件也是如此,第一个 Spinner
再次获得焦点,它再次接收事件,再次将焦点更改为第二个 Spinner
,依此类推...
结果是焦点在 Spinner
之一处或多或少随机结束。
改为使用每次按键仅触发一次的 onKeyReleased
事件。
如果您有可编辑的 Spinner
并希望在用户输入后更改焦点,请使用 onAction
event of the editor
而不是 Spinner
上的按键事件。
windVelSpinner.getEditor().setOnAction(e -> {
launchTubeSpinner.requestFocus();
});
(在initialize
方法中)