【问题标题】:use of javafx properties and binding in the data model在数据模型中使用 javafx 属性和绑定
【发布时间】: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

标签: java javabeans javafx-2


【解决方案1】:

将 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");

【讨论】:

    【解决方案2】:

    正如 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 2021-12-01
      相关资源
      最近更新 更多