【问题标题】:Spinner can't actually not resolve to DoubleSpinner 实际上不能解析为 Double
【发布时间】:2017-01-11 18:41:57
【问题描述】:

我已将代码从一台笔记本电脑复制/粘贴到另一台笔记本电脑,但我的微调器出了点问题:

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

@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()); 也没有给我错误,所以我显然很失望,因为这不是在需要值的地方进行强制转换的问题

【问题讨论】:

    标签: java casting integer double spinner


    【解决方案1】:

    初始化 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 类有 Integer 和 String 作为其常用类型(可能默认初始化)。

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

    【讨论】:

    • 没有必要初始化像微调器这样的元素,在.fxml文件中有,并且只是声明为控制器的属性问题不是从这里来的,因为它今天早上工作但是在另一台计算机上
    【解决方案2】:

    要修复:只需将以下值之一:startValueminValueMaxValueint 更改为 double.fxml 文件中

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

    需要变成

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

    显然来自我的 jdk 版本中的错误,但在代码中很容易修复

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      相关资源
      最近更新 更多