如何在 JavaFX Spinner 组件中启用 up/down 键
How to enabled up/down keys in a JavaFX Spinner component
我在我的 JavaFX 应用程序中使用 Spinner 组件。它是通过 FXML 创建的:
<Spinner fx:id="spinner" editable="true" min="0" max="100"
initialValue="3" />
根据 Spinner 的文档:
The keyboard up/down arrow keys also cycle through the elements.
但是,当我单击微调器组件并按向上或向下键时,只有文本字段中的光标位置发生变化,微调器值没有变化。
是否可以让微调器组件像 JavaDoc 中描述的那样对 UP 和 DOWN 做出反应?
我已经尝试添加一个关键侦听器来完成这项工作:
spinner.setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
spinner.increment(1);
break;
case DOWN:
spinner.decrement(1);
break;
}
});
但是这个监听器只有在我按下UP或者DOWN结合控制键的时候才会被调用,不是很直观。有没有没有这种组合键的解决方案?
我相信这是因为您的 FXML 中有 editable="true"
。微调器中的 TextField 将变得可编辑并拦截所有点击,因此您只需在 editorProperty() 上设置 Listener 而不是微调器本身。像这样:
spinner.getEditor().setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
System.out.println("++1");
spinner.increment(1);
break;
case DOWN:
System.out.println("--1");
spinner.decrement(1);
break;
}
});
我在我的 JavaFX 应用程序中使用 Spinner 组件。它是通过 FXML 创建的:
<Spinner fx:id="spinner" editable="true" min="0" max="100"
initialValue="3" />
根据 Spinner 的文档:
The keyboard up/down arrow keys also cycle through the elements.
但是,当我单击微调器组件并按向上或向下键时,只有文本字段中的光标位置发生变化,微调器值没有变化。
是否可以让微调器组件像 JavaDoc 中描述的那样对 UP 和 DOWN 做出反应?
我已经尝试添加一个关键侦听器来完成这项工作:
spinner.setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
spinner.increment(1);
break;
case DOWN:
spinner.decrement(1);
break;
}
});
但是这个监听器只有在我按下UP或者DOWN结合控制键的时候才会被调用,不是很直观。有没有没有这种组合键的解决方案?
我相信这是因为您的 FXML 中有 editable="true"
。微调器中的 TextField 将变得可编辑并拦截所有点击,因此您只需在 editorProperty() 上设置 Listener 而不是微调器本身。像这样:
spinner.getEditor().setOnKeyPressed(event -> {
switch (event.getCode()) {
case UP:
System.out.println("++1");
spinner.increment(1);
break;
case DOWN:
System.out.println("--1");
spinner.decrement(1);
break;
}
});