相关疑难解决方法(0)

为什么我的 Spinner 在第一次初始化时不更新其绑定属性?

我有一个Spinner控制器:

@FXML
private Spinner<Integer> spnMySpinner;
Run Code Online (Sandbox Code Playgroud)

和一个SimpleIntegerProperty控制器:

private static final SimpleIntegerProperty myValue = 
new SimpleIntegerProperty(3); //load a default value
Run Code Online (Sandbox Code Playgroud)

我已在控制器的方法中将它们绑定在一起initialize

spnMySpinner.getValueFactory().valueProperty().bindBidirectional(myValueProperty().asObject());
Run Code Online (Sandbox Code Playgroud)

但只有在控制器第二次初始化后,绑定才能正常工作。我可以通过以下方式重现它:

  1. 我使用关联的控制器打开舞台,它会加载属性中myValue正确指定的默认值(数字 3)。
  2. 我单击微调器上的增量按钮将其设置为 4。它更改了微调器的 value 属性中的值,但绑定属性myValue保持不变,仍为数字 3。
  3. 我关闭舞台/窗户。
  4. 我重新打开它,微调器的值再次变为 3。
  5. 我再次增加它。现在绑定工作了,我在微调器和绑定属性内都有一个“4”。

整个简约但可启动/可复制的代码:

主要.java:

package spinnerpoc;

import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage stage) throws IOException {
        Parent root  = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
        Scene scene = new …
Run Code Online (Sandbox Code Playgroud)

data-binding javafx

3
推荐指数
1
解决办法
1283
查看次数

标签 统计

data-binding ×1

javafx ×1