【发布时间】:2019-12-13 22:03:22
【问题描述】:
我不明白为什么,如果 Spinner 调用 ChangeListener 两次。我怎样才能让它只调用一次?
Controller.java
public class Controller {
@FXML
Spinner<Double> spinner;
@FXML
public void initialize(){
spinner.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(0,350,60,1));
spinner.valueProperty().addListener(new ChangeListener<Double>() {
@Override
public void changed(ObservableValue<? extends Double> observable, Double oldValue, Double newValue) {
System.out.println("Old Value" + oldValue + "New Value" + newValue);
}
});
}}
Main.java
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}}
输出:
Old Value 60.0 New Value 780.0
Old Value 780.0 New Value 350.0
【问题讨论】:
-
两次调用时输入什么值?大于 350?
-
是的,例如我输入780
标签: java javafx javafx-8 spinner