JavaFX 绑定(bind)和属性更改

标签 java javafx properties binding

我正在 JavaFX 中使用绑定(bind)和属性。 我有一个 Label label 和一个 Person currentPerson。 我有以下代码:

label.textProperty().bind(currentPerson.nameProperty());

然后我在另一段代码中:

currentPerson = newPerson;   //newPerson is a given Person instance

这样 labeltextProperty 就不会更新!

但是如果我在那段代码中这样做:

currentPerson.setName(newPerson.getName());

然后这会更新 labeltextProperty

我的问题是:为什么第二种方法会更新 labeltextProperty,而第一种方法不会,即使 nameProperty在这两种情况下,currentPerson 的值都发生了变化吗?

最佳答案

As mentioned ,您在以下时间后失去了第一个绑定(bind):

currentPerson = newPerson;

解决方案是在对 currentPerson 进行任何赋值后(重新)绑定(bind) currentPerson,或者使用方法来传递 newPerson 数据,例如:

currentPerson.setPerson(newPerson);


public class Person{

    private StringProperty name = new SimpleStringProperty();

    // ....


    public void setPerson(Person person) {
        // ....
        this.name.set(person.name.get());
    }
}

关于JavaFX 绑定(bind)和属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47996558/

相关文章:

javafx - 无法构建 JemmyFX

C# 字段与属性

java - 如何使用 Integer.toBinaryString 设置 java 中的位数?

java - 如何在流式传输时重命名放置在远程位置的文件

css - 设置菜单项css字体样式无可见效果

java - 重写方法初始化在调用时无法识别变量值更改

PowerShell 成员 : explanation for Methods and Properties?

Java属性: � displayed instead of ä

java - Springboot测试在Junit 5中加载ApplicationContext失败

java - 程序不会在 while 循环中进入 try block