在数据模型中使用javafx属性和绑定



javafx属性是将数据模型连接到javafxgui的好方法,因为它们的绑定模型实现了强大的通知更新机制

属性和绑定并不严格与gui相关,而是javabeans的扩展

因此,人们希望在应用程序模型类中使用它们,而不引入对包javafx.beans.property.StringProperty的依赖,并且通常从javafx.*引入依赖

换句话说:(更新)
我可能需要将应用程序分为两个模块
一个模块应该只包含处理数据的类(MVC中的Model类)
第二个模块将包含所有图形gui内容,即javafx

如果我的数据类使用javafx绑定,我会引入一个导入javafx.beans.anything;(最好的是绑定是java.*或javax.*的一部分,所以我不会将"gui库"引用到核心数据库中)。javafx将包含在stardard发行版中,这一事实缓解了这种冗长的问题,但这似乎是一个棘手的解决方案。毕竟,我认为我斜视了一个依赖于某种摇摆"实用程序"类的web应用程序。

有什么选择吗

我正在评估使用listeneres创建常规javabeans属性并将它们桥接到fx属性所需的工作。

JavaFX对象到POJO(普通旧Java对象)的绑定技术可能会在这里对您有所帮助。

请参阅下一组教程:http://ugate.wordpress.com/2012/06/06/javafx-pojo-bindings/

换句话说,您可以使用下一种方式访问POJO对象:

    Person person = new Person();
    PathProperty prop = new PathProperty(
        person, "address.streetName", String.class);
    Bindings.bindBidirectional(prop, myTextField.textProperty());
    prop.set("123 1st Street");

正如Sergey所说:jfxtras库是使用BeanPathAdapter API的解决方案:https://github.com/JFXtras/jfxtras-labs/blob/2.2/src/main/java/jfxtras/labs/scene/control/BeanPathAdapter.java

如果您使用Granite Data Services,还有一种选择:它有一个类生成器,您可以自定义它来生成javafx属性。它是一个漂亮的框架,专注于javafx应用程序的服务器端集成。http://java.dzone.com/articles/data-management-javafx-and

最新更新