在fxml中初始化Spinner控件

Initialize Spinner control in fxml

新 JDK 在这里:

JDK 8u40 release includes new JavaFX UI controls; a spinner control, formatted-text support, and a standard set of alert dialogs.

我想用 fxml 中的 IntegerSpinnerValueFactory 初始化 Spinner。我试过如下:

<Spinner><valueFactory><SpinnerValueFactory ???????? /></valueFactory></Spinner>

新控件的文档很少,考虑到 class 编码中只有 java。

知道如何初始化它吗?

如果你看一下 Spinner class,你有几个可用的构造函数。

例如:

public Spinner(@NamedArg("min") int min,
               @NamedArg("max") int max,
               @NamedArg("initialValue") int initialValue) {
    this((SpinnerValueFactory<T>)new SpinnerValueFactory.IntegerSpinnerValueFactory(min, max, initialValue));
}

据此answer:

The @NamedArg annotation allows an FXMLLoader to instantiate a class that does not have a zero-argument constructor.

因此您可以使用 minmaxinitialValue 作为 FXML 文件中 Spinner 的参数:

<Spinner fx:id="spinner" min="0" max="100" initialValue="3" >
      <editable>true</editable>
</Spinner>

请注意,您的 IDE 可能会抱怨它并发出有关 Class javafx.scene.control.Spinner doesn't support property 'min' 的警告...但是您可以构建并 运行 项目。