JavaFX Spinner.getValue()

JavaFX Spinner.getValue()

我正在处理 JavaFX 表格。该表单应该采用值并将其添加到数据库中。每当我尝试通过 .getValue 获取值时,它都会产生一个错误

Incompatible Types: Object cannot be converted to Int

这是 FXML 代码:

<Spinner fx:id="spinner" layoutX="494.0" layoutY="528.0" maxWidth="100.0" minWidth="100.0" prefWidth="100.0">
    <valueFactory>
       <SpinnerValueFactory.IntegerSpinnerValueFactory min="0" max="30" initialValue="20" amountToStepBy="1"/>
    </valueFactory>
</Spinner>

Java代码:

 Spinner mySpinner=(Spinner) spinner;
        int value = mySpinner.getValue;

感谢您的帮助

Just posting the comment as an answer. To resolve this question:

永远不要使用raw types。改用这样的东西:

Spinner<Integer> mySpinner = (Spinner<Integer>) spinner; 

如另一个答案所述,您永远不应该使用原始类型。 Spinner 是一个 generic type: it's defined as Spinner<T>,其中 T 是一个 类型参数 ,代表 "the type of the value that the spinner holds"。更正式地说,文档说明

T - The type of all values that can be iterated through in the Spinner. Common types include Integer and String.

使用通用的 class 时,您应该始终指定类型,例如在你的情况下你应该使用

Spinner<Integer>

指代迭代整数的微调器;你不应该只使用 "raw type"

Spinner

因为您已经使用

在 FXML 中定义了微调器
<Spinner fx:id="spinner" ... >

你大概是在将它注入到控制器中。注入时使用参数化类型即可:

public class MyController {

    @FXML
    private Spinner<Integer> spinner ;

    // ...

}

现在编译器确信 spinner 持有 Integers 作为值,所以你可以做

int value = spinner.getValue();

另见 Java Generics: List, List<Object>, List<?>