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

回到顶部