【发布时间】:2014-05-29 19:07:19
【问题描述】:
在我的项目中,我有许多 POJO,其字段显示在 JavaFX GUI 中。我目前使用手动刷新来更新 UI——每当 POJO 发生变化时,我都会调用 refresh() 方法。我想尝试使用绑定来完成此操作,这需要使用 JavaFX 属性。虽然我可以更改对象,但它的内部字段是其他对象,我无法更改(它们是使用 GSON 填充的,AFAIK 使用“普通”Java 对象——例如 String,而不是 StringProperty)。此外,该对象是只读的——它只有 getter,没有 setter。
我相信我可以使用 ReadOnlyJavaBeanObjectPropertyBuilder(是的 Java 命名?)或 ReadOnlyObjectWrapper 将对象包装为属性。但是,内部字段(我想要将标签绑定到的字段)不会转换为属性。有没有办法进行这种递归转换——将包含普通对象字段的整个对象转换为包含更多属性的属性?这甚至是必要的——我做错了什么吗?
编辑:我怀疑任何解决方案都必须使用反射。
【问题讨论】:
-
我认为您的刷新可能是唯一的方法。这是我做的一个相关答案,stackoverflow.com/a/22107105/2855515。
-
我目前正在测试 BeanPathAdapter,正如@Jurgen 所建议的那样。它似乎做了我想做的大部分事情。这将需要我为对象实现 setter,但这不是什么大问题(尽管永远不应该调用 setter)。
标签: java properties javafx javafx-8 pojo