2012-09-14 80 views
7

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

属性和绑定不是严格的gui相关,而是它们是javabeans的扩展。

因此,人们希望在应用程序模型类中使用它们,而不会引入对包javafx.beans.property.StringProperty和一般来说javafx.*的依赖关系。

换句话说:(更新)
我可能需要应用程序分成两个模块。
一个模块应该只包含操纵数据的类(Model类,MVC说)。
第二个模块将包含所有图形gui的东西,即javafx。

如果我的数据类使用javafx绑定,我会引入一个导入javafx.beans.anything;(最好的情况是绑定是java。*或javax。*的一部分,所以我不会将“gui库”引用到核心数据库)。 javafx将被包含在标准版本中的事实缓解了这个问题,但它似乎是一个棘手的解决方案。毕竟,我认为我眯起了一个网络应用程序,这取决于一些摆动“实用程序”类。

有没有可用的选项?

我正在评估创建具有监听器的常规javabeans属性并将它们桥接到fx属性所需的工作量。

+1

你能说清楚'使用javafx属性而不依赖于javafx.beans包'是什么意思吗?你可以从这个包里使用它们或者编写你自己的包。鉴于JavaFX自7u4以来就是Java的一部分,后一种选择并不是很有用。 –

+0

我已添加'换句话说'。 – AgostinoX

+1

谢尔盖给你正确的提示。如果你喜欢使用属性和绑定,只需在你的模型中使用这些属性!无论如何,它是7u4以来的所有JDK的一部分。 – pmoule

回答

1

JavaFX对象绑定到POJO(普通Java对象)techinque可能会帮助你。

看下集教程: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");