javafx,从另一个线程更新ui
我有一个javafx应用程序和一个工作线程,通过javafx.concurrent.Task
来实现,它执行一个漫长的过程,即压缩并上传一组文件。
我已通过将任务进度连接到进度条progressProperty
。
用这些信息更新UI不能从工作线程中完成,最多我可以将其添加到同步集合中。
但是然后我需要一些事件来通知UI新数据可用。
javafx是否对此问题提供某些特定的支持?
更新,更好的配方
我没有设计一个临时的跨线程机制作为Platform.runLater,而是试图允许每个属性都被其他线程侦听。就像Task提供的runningProperty和stateProperty一样
回答:
据我所知,我遇到了类似的问题,必须自己处理错误。我的解决方案是通过方法调用来更新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线程进行更新(就像在几乎所有其他框架中所做的那样)。
以上是 javafx,从另一个线程更新ui 的全部内容, 来源链接: utcz.com/qa/422670.html