1 回答

TA贡献1806条经验 获得超5个赞
使用javafx.beans.property.adapter包中的类。
public class Foo {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class FooAdapter {
private final JavaBeanStringProperty name;
public FooAdapter(Foo foo) {
try {
name = JavaBeanStringPropertyBuilder.create().bean(foo).name("name").build();
} catch (NoSuchMethodException ex) {
throw new RuntimeException(ex);
}
}
public final void setName(String name) {
this.name.set(name);
}
public final String getName() {
return name.get();
}
public final StringProperty nameProperty() {
return name;
}
}
上面创建的适配器属性要求底层对象遵循 Java Bean 属性约定。但是,有一些方法可以自定义用于 getter/setter 的方法。
适配器属性将从底层对象获取值,如果可写,也会在更新时写入底层对象。如果支持PropertyChangeListeners,它还可以观察底层对象的变化。请注意,此功能是使用反射实现的;如果您正在使用模块,您需要将适当的exports/opens指令添加到您的module-info(JavaBeanStringProperty有关详细信息,请参阅各种属性的 javadoc,例如)。
添加回答
举报