我试图获得Spinner(JavaFX)的价值。但是返回null。
来源:
public class FXMLTeste implements Initializable {
@FXML
private Spinner uni;
@Override
public void initialize(URL url, ResourceBundle rb) {
uni.setEditable(true);
}
@FXML
public void actionButton(){
System.out.println(uni.getValue()); // return NULL
}
}
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0"></Spinner>
答案 0 :(得分:1)
您需要为微调器设置valueFactory
,以允许Spinner
的值变为非null
。这可以通过直接分配属性来完成:
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0">
<valueFactory>
<!-- add factory instance creation here -->
</valueFactory>
</Spinner>
使用适当的构造函数
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0" min="1" max="10" initialValue="4" />
或通过“initialize
方法”手动“执行此操作:
SpinnerValueFactory valueFactory = ...
uni.setValueFactory(valueFactory);
您还应指定Spinner
的类型参数,即使它是通配符(Spinner<?>
),也请参阅What is a raw type and why shouldn't we use it?
做出有根据的猜测,你可能正在寻找这样的东西:
<fx:define>
<FXCollections fx:factory="observableArrayList" fx:id="unis" />
</fx:define>
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0" items="$unis" />
控制器
@FXML
private Spinner<String> uni;
@FXML
private ObservableList<String> unis;
@Override
public void initialize(URL url, ResourceBundle rb) {
unis.add("Oxford");
unis.add("Harvard");
}