除了 javafx.beans.property 提供的机制之外,我是否应该在非 GUI 应用程序逻辑中使用其他内容?

Fre*_*son 5 java properties observable changelistener javafx-2

过去,我不止一次实现了与 JavaFX 提供的类似的属性和侦听器。

由于我总是更喜欢使用广泛支持的包而不是我自己发明的东西,所以我很想在下一个项目中使用 JavaFX 属性,但在此之前,我想得到以下问题的答案。

在与 GUI 无关但会受益于更改侦听器以监视和控制系统状态的软件中,我是否仍然应该选择 JavaFX 提供的属性机制,或者是否有其他可用的东西适合我?...或者我还需要自己实现这个机制吗?

问候,弗雷德里克

jew*_*sea 2

JavaFX 属性机制应该可以工作。它们被编写为支持 JavaFX GUI,但也应该可以很好地用于非 GUI 逻辑 - 尽管我认为到目前为止还没有广泛用于该目的。我无法与其他竞争性框架讨论哪个框架可以更好地满足您的需求。


当您看到 JavaFX 中支持属性的类的数量时,可能会有点令人畏惧,但它们往往很好地结合在一起,并且存在许多类来屏蔽对象/基元阻抗不匹配。遗憾的是没有更好的语言支持这些功能。使用 IDE 和自动完成功能进行编程效果非常好,因此您无需输入太多内容。侦听器折叠成 jdk8 lambda 表达式,因此它们最终可以非常简洁。

绑定和侦听器框架是允许 JavaFX 控件如此容易地适应和利用的一部分 - 它们为系统的每个项目提供了更改通知的挂钩。

JavaDoc可用。不幸的是,关于绑定集合的官方文档并没有充分描述如何使用它的功能集。有一篇关于将JavaFX 属性与 POJO 一起使用的有用文章。

JavaFX 的 bean、绑定和属性支持的来源尚未公开(尽管计划在未来几个月内公开)。


使用高于 jdk7u6 的 Java 版本,并确保jfxrt.jar发行版中的文件位于您的类路径中,以便您选择 JavaFX 类。如果您不使用任何 GUI 组件,则无需Application在程序中扩展 JavaFX 类。


需要考虑的相关非 GUI 包有:

javafx.beans javafx.beans 包包含定义最通用形式的可观察性的接口。

javafx.beans.binding 绑定的特点

javafx.beans.propertyjavafx.beans.property 包定义了只读属性和可写属性,以及许多实现。

javafx.beans.property.adapter (使标准 pojo beans 适应 JavaFX 属性)。

javafx.beans.value javafx.beans.value 包包含两个基本接口 ObservableValue 和 WritableValue 及其所有子接口。

javafx.animation 提供一组易于使用的基于过渡的动画(与计时相关的非 GUI 部分)的类。

javafx.collections 包含基本的 JavaFX 集合和集合实用程序

javafx.util.converter该包适用于 JavaFX 的标准字符串转换器。