我正在 JavaFX 中使用绑定(bind)和属性。
我有一个 Label label
和一个 Person currentPerson
。
我有以下代码:
label.textProperty().bind(currentPerson.nameProperty());
然后我在另一段代码中:
currentPerson = newPerson; //newPerson is a given Person instance
这样 label
的 textProperty
就不会更新!
但是如果我在那段代码中这样做:
currentPerson.setName(newPerson.getName());
然后这会更新 label
的 textProperty
。
我的问题是:为什么第二种方法会更新 label
的 textProperty
,而第一种方法不会,即使 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/