如果我按照这里描述的JavaFX属性定义,我试图做的事情可以正常工作。现在,相反,我想使用Java Beans属性适配器从Java Beans对象中定义属性。由于没有文档,我无法弄清楚它是如何工作的。
假设我有一个简单的POJO类:
最后进行一项测试:
我期望看到的是:
假设我有一个简单的POJO类:
public class Person {
private String name;
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}
以及一个PersonProperty:
public class PersonProperty {
private Person person = new Person();
private JavaBeanStringProperty name;
public PersonProperty() throws NoSuchMethodException {
name = JavaBeanStringPropertyBuilder.create().bean( person ).name( "name" ).build();
}
public Person getPerson() {
return person;
}
public void setPerson( Person person ) {
this.person = person;
}
public JavaBeanStringProperty nameProperty() {
return name;
}
}
最后进行一项测试:
public void personTest() throws NoSuchMethodException {
PersonProperty pp = new PersonProperty();
pp.getPerson().setName( "A" );
pp.getPerson().setName( "B" );
pp.nameProperty().addListener( new ChangeListener<String>() {
@Override
public void changed( ObservableValue<? extends String> ov, String t, String t1 ) {
System.out.println( "from " + t + " to " + t1 );
}
} );
pp.getPerson().setName( "C" );
pp.getPerson().setName( "D" );
}
我期望看到的是:
from B to C
from C to D
相反,什么也不会出现。
如果我在 personTest 的结尾添加 pp.nameProperty().set("E")
,我会得到 从 B 到 E