Spinner JavaFX 的捕获值
Catch value of Spinner JavaFX
我正在尝试获取 Spinner(JavaFX) 的值。但是 return 无效。
来源:
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
}
}
fxml
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0"></Spinner>
您需要为微调器设置 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" />
或通过 "manually" 在 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");
}
我正在尝试获取 Spinner(JavaFX) 的值。但是 return 无效。
来源:
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
}
}
fxml
<Spinner fx:id="uni" prefHeight="25.0" prefWidth="342.0"></Spinner>
您需要为微调器设置 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" />
或通过 "manually" 在 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");
}