我在我的 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 使用react?
我已经尝试添加一个关键监听器来完成这项工作:
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;
}
});
关于java - 如何在 JavaFX Spinner 组件中启用上/下键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30597345/