Spinner 实际上无法解析为 Double

Spinner can't actually not resolve to Double

我已经 copy/paste 从笔记本电脑到另一台笔记本电脑的代码,但我的微调器出了点问题:

所以在我的控制器中我有:

@FXML
private Spinner<Double> widthSpinner;

并且在 fxml 中

<Spinner fx:id="sp2" min="0" max="20"></Spinner>

它今天早上运行正常,但现在出现错误: java.lang.ClassCastException:java.lang.Integer cannot be cast to java.lang.Double

即使是 System.out.println("__:" + widthSpinner.getValue()); 也没有给我错误,所以我显然很失望,因为对于需要值的地方这不是强制转换的问题

初始化 Spinner 的方法有:

public Spinner(double min,
               double max,
               double initialValue)

public Spinner(double min,
               double max,
               double initialValue,
               double amountToStepBy)

new Spinner(SpinnerValueFactory.DoubleSpinnerValueFactory)

阅读只需使用 widthSpinner.getValue() 即可获得双倍价值。

Spinner class 将 Integer 和 String 作为其常见类型(可能默认已初始化)。

如果这有帮助,请告诉我。 参考:Spinner class documenation on Oracle website

要修复:只需更改以下值之一:startValueminValueMaxValueintdouble.fxml 文件

<Spinner fx:id="sp2" min="0" max="20"></Spinner>

需要变成

<Spinner fx:id="sp2" min="0" max="20.0"></Spinner>
                                    ^^ 

显然是由于我的 jdk 版本中的一个错误,但很容易在代码中修复