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,而先不,即使的currentPersonnameProperty在两种情况下发生改变?
回答:
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
