JavaFX绑定和属性更改

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

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

然后,我必须在另一段代码:

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

这样的labeltextProperty不更新!

但是,如果我的代码段做:

currentPerson.setName(newPerson.getName()); 

那么这个更新的labeltextProperty

我的问题是:为什么第二种方式更新的labeltextProperty,而先不,即使的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

回到顶部