繁体   English   中英

JavaFX 绑定和属性更改

[英]JavaFX binding and property change

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

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

然后我在另一段代码中:

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

这样labeltextProperty就不会更新!

但是,如果我在该部分代码中这样做:

currentPerson.setName(newPerson.getName());

然后这会更新labeltextProperty

我的问题是:为什么第二种方式更新labeltextProperty ,而第一种方式没有,即使currentPersonnameProperty在两种情况下都发生了变化?

我认为对你的问题最基本的答案是,在currentPerson = newPerson;行之后currentPerson = newPerson; currentPerson对象与之前绑定到label对象不同。

如前所述,您在以下情况后丢失了第一个绑定:

currentPerson = newPerson;

该解决方案是(重)结合currentPerson任何分配到后currentPerson ,或相反,使用一种方法来传递newPerson数据,如:

currentPerson.setPerson(newPerson);


public class Person{

    private StringProperty name = new SimpleStringProperty();

    // ....


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

您必须设置bindperson's name相关的bind ,因此当您使用getName ,它会更新label

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM