我有一个 JavaFX 应用程序和一个工作线程,通过以下方式实现javafx.concurrent.Task
,它执行一个漫长的过程,即压缩和上传一组文件。
我已将任务进度连接到进度条progressProperty
.
除此之外,我希望将正在处理的项目的详细状态报告到 UI 中。也就是说,正在处理的文件的名称及其大小以及单个文件处理可能出现的任何错误。
使用这些信息更新 UI 无法从工作线程完成,最多我可以将其添加到同步集合中。
但随后我需要一些事件来通知 UI 新数据可用。
JavaFX 对这个问题有一些具体的支持吗?
更新,更好的配方
而不是设计一个临时的跨线程机制Platform.runLater
,我试图允许其他线程监听每个属性。就像runningProperty
and stateProperty
由...提供Task
.
我遇到了类似的问题,据我所知,您必须自己处理错误处理。我的解决方案是通过方法调用更新 UI:
就像是:
try
{
//blah...
}
catch (Exception e)
{
reportAndLogException(e);
}
...
public void reportAndLogException(final Throwable t)
{
Platform.runLater(new Runnable() {
@Override public void run() {
//Update UI here
}
});
}
本质上,我只是手动将其移回 UI 线程进行更新(就像我在几乎任何其他框架中所做的那样)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)