JavaFX绑定和属性更改
我正在使用绑定和属性在JavaFX中工作。 我有一个Label label
和一个Person currentPerson
。 我有以下代码:JavaFX绑定和属性更改
label.textProperty().bind(currentPerson.nameProperty());
然后,我必须在另一段代码:
currentPerson = newPerson; //newPerson is a given Person instance
这样的label
的textProperty
不更新!
但是,如果我的代码段做:
currentPerson.setName(newPerson.getName());
那么这个更新的label
的textProperty
。
我的问题是:为什么第二种方式更新的label
的textProperty
,而先不,即使的currentPerson
nameProperty
在两种情况下发生改变?
回答:
As mentioned,你失去了你的第一结合后:
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());
}
}
回答:
必须发生的,你已经在关系bind
设置为person's name
,所以当你使用getName
,它更新label
回答:
我觉得最基本的回答你的问题是,该行currentPerson = newPerson;
后,currentPerson
对象与之前绑定到label
的对象不是同一个对象。
以上是 JavaFX绑定和属性更改 的全部内容, 来源链接: utcz.com/qa/266729.html