java - 如何在 JavaFX Spinner 组件中启用上/下键

标签 java spinner javafx-8

我在我的 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/

相关文章:

JavaFX : How to pass value from background thread to JavaFX UI thread with Task

JavaFX 标签换行文本行距

java - 如何逐个字段比较@Entity注释的类而不降低将对象存储到数据库的性能?

java - 在更改第一个微调器值时更改第二个微调器值

java - 用独特的字符串填充微调器

android - 多列中的项目 - 微调器

javafx - 透明节点背景

java - Spring Security + LDAP 总是返回 BadCredentialsException

java - 将整数集转换为 int[] 数组时出现问题

java - 如何在 Android 中的卡片标题上显示倒计时器?