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
相关产品推荐
相关产品推荐

