You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX中如何获取Spinner组件的用户输入值?

解决JavaFX Spinner getValue()无效的问题

看起来你遇到的问题大概率是Spinner的泛型类型声明不正确导致的,下面是具体的解决步骤:

步骤1:修正控制器中Spinner的类型声明

在你的RestController类里,确保RestSpinner被声明为泛型Integer类型的Spinner,而不是默认的Spinner<Object>:

import javafx.scene.control.Spinner;
// ... 其他必要导入

public class RestController {
    @FXML
    private Spinner<Integer> RestSpinner; // 明确指定泛型为Integer
    @FXML
    private Button RestOK;
    // ... 其他变量和方法

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
        RestOK.setOnAction(e -> ToF.rest(RestSpinner.getValue(), restTime)); 
    }
}

步骤2:优化getValue()的调用

因为Spinner<Integer>的getValue()方法会直接返回Integer类型,Java会自动帮你拆箱为int,所以不需要额外的强制转换,这样代码更简洁也更安全。

为什么之前的代码会失效?

如果你的控制器里RestSpinner没有指定泛型,它默认是Spinner<Object>类型,调用getValue()会返回Object。虽然你做了强制转换(int) RestSpinner.getValue(),但这种转换在运行时可能会出现类型转换异常,或者因为类型不匹配导致无法正确获取到Spinner的数值,最终表现为"getValue()无法生效"。

另外再检查两个小细节:

  • 确保FXML中的fx:id="RestSpinner"和控制器中的变量名完全一致(大小写敏感)
  • 如果你保留了Spinner的可编辑特性,IntegerSpinnerValueFactory已经默认处理了输入文本到整数的转换,不需要额外写逻辑

内容的提问来源于stack exchange,提问作者Nagamiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:24:38