JAVAFX8 更新控件模型?

JAVAFX8 Updating Controls Models?

UI 诸如 LISTVIEW 或 Tree 或 ... 之类的控件带有可观察的模型。

当一个人对该模型进行更改时,我想 javaFX 知道如何在显示中自动刷新它。

然而我的问题如下:

这是有意的方式吗,想要更新而不是替换此模型的人,在后台线程中使用 platform.runlater 进行更新。

换句话说,一个人有一些重要的计算要做,并且需要更新一个 ObservableList 作为结果。这是预期的方式吗,在后台线程中完成繁重的工作,并在它结束时,运行 稍后在平台 运行 中进行更新?

我问这个是因为这是我到目前为止一直在做的,没有问题。但是从我在这里和那里的阅读来看,特别是

http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html

看来要用别的机制了。人们应该 return 一个完整列表而不是更新可观察列表。

但这只有当事情来自 GUI 时才有效。如果更新是从后端触发的,则没有办法这样做。

到目前为止我使用的解决方案是始终持有对可观察列表的引用并通过 platform.Runlater.

更新它

还有其他方法吗?

非常感谢,

您给出的 link 有一个示例(PartialResultsTask)按照您的描述进行操作:它通过调用 [=12= 来更新现有的 ObservableList ].所以这显然是一种受支持的做事方式。

为了从后端更新(即从 class 不知道数据正在 UI 中使用),你真的必须 post 一些代码任何人都可以提供帮助。但是您可以看看 this article 中使用的技术。虽然他实际上并没有在此处的示例中从后端更新列表,但可以使用相同的策略来执行此操作。