javafx属性是将数据模型连接到javafx gui的好方法,因为它们的绑定模型实现了强大的通知更新机制。
属性和绑定与gui无关,而是javabeans的扩展。
因此,人们希望在应用程序模型类中使用它们,而不会对包javafx.beans.property.StringProperty
以及javafx.*
引入依赖关系。
换句话说:(更新)
我可能需要将应用程序拆分为两个模块。
一个模块应该只包含操作数据的类(Model类,MVC)。
第二个模块将包含所有图形gui的东西,即javafx
如果我的数据类使用javafx绑定,我会引入一个导入javafx.beans.anything;
(最好的是绑定是java。*或javax。*的一部分,所以我不会引用“gui库”到核心数据库)。
javafx将被纳入标准版本的事实缓解了这种增长,但这似乎是一个棘手的解决方案。毕竟我认为我斜视一个依赖于一些“实用”类的Web应用程序。
有没有可用的选择?
我正在评估使用listeneres创建常规javabeans属性并将它们桥接到fx属性所需的工作量。
答案 0 :(得分:1)
将JavaFX对象绑定到POJO(Plain Old Java Object)技术可能会对您有所帮助。
请参阅下一组教程: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");
答案 1 :(得分:1)
正如谢尔盖所说: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