【发布时间】:2012-09-07 09:25:37
【问题描述】:
javafx 属性是将数据模型连接到 javafx gui 的好方法,因为它们的绑定模型实现了强大的通知更新机制。
属性和绑定不是严格与 gui 相关的,而是对 javabean 的扩展。
因此,人们希望在应用程序模型类中使用它们,而不需要引入对包 javafx.beans.property.StringProperty 和一般来自 javafx.* 的依赖。
换句话说:(更新)
我可能需要将应用程序分成两个模块。
一个模块应该只包含操作数据的类(模型类,MVC 语言)。
第二个模块将包含所有图形 gui 内容,即 javafx。
如果我的数据类使用 javafx 绑定,我会引入一个导入 javafx.beans.anything;(最好的情况是绑定是 java.* 或 javax.* 的一部分,所以我不会将“gui 库”引用到核心中-数据库)。
javafx 将包含在标准版本中的事实缓解了这个问题,但这似乎是一个棘手的解决方案。毕竟我认为我斜视了一个依赖于一些摆动“实用程序”类的 Web 应用程序。
有没有可用的选项?
我正在评估使用侦听器创建常规 javabeans 属性并将它们桥接到 fx 属性所需的工作量。
【问题讨论】:
-
你能解释一下
using javafx properties without dependency on javafx.beans packages是什么意思吗?您可以从该包中使用它们,也可以编写自己的包。鉴于自 7u4 以来 JavaFX 是 Java 的一部分,后一个选项并不是很有用。 -
我添加了一个“换句话说”。
-
Sergey 刚刚给了你正确的提示。如果您喜欢使用属性和绑定,只需在您的模型中使用它们!从 7u4 开始,它都是 JDK 的一部分。
-
所以我的核心数据对象(我想在没有任何 gui 的网络服务器上运行)将取决于 javafx...
-
我和 AgostinoX 的情况一样。我想要一个我的 FX 应用程序可以利用的模型模块,但我希望该模块与 FX 无关。虽然我的测试表明您可以在非 fx 线程上使用 FX 属性,因此可以在其他上下文中使用它们,但毫无疑问,消费者会认为因为它们是 FX 属性,它们只会从 FX 线程中触发……不是这样!所以它会产生错误的印象。我想我要创建自己的属性ala stackoverflow.com/questions/441240/javabeans-alternatives