javafx,从另一个线程更新ui
我有一个javafx应用程序和一个工作线程,通过javafx.concurrent.Task
来实现,它执行一个漫长的过程,即压缩并上传一组文件。
我已通过将任务进度连接到进度条progressProperty
。
除此之外,我想将有关正在处理的项目的详细状态报告到ui中。 也就是说,正在处理的文件的名称及其大小以及单个文件处理可能引起的任何错误。
用这些信息更新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线程进行更新(就像在几乎所有其他框架中所做的那样)。
-
从android中的另一个线程更新ui
2021-01-29 关注 0 浏览122 1答案
-
如何从另一个类中运行的另一个线程更新UI
2021-02-02 关注 0 浏览111 1答案
-
从另一个线程更新JLabel
2021-01-29 关注 0 浏览94 1答案
-
如何从另一个线程调用UI方法
2021-02-02 关注 0 浏览135 1答案
-
如何从另一个线程更新GUI?
2021-02-02 关注 0 浏览124 1答案
-
从另一个线程更新SWT对象
2021-01-29 关注 0 浏览121 1答案
-
如何从另一个线程更新 GUI?
2022-03-22 关注 0 浏览85 1答案
-
从另一个线程或进程更新Gtk.ProgressBar
2021-01-29 关注 0 浏览78 1答案
-
如何从Java中的另一个线程更新SWT GUI
2021-01-30 关注 0 浏览68 1答案
-
从另一个运行FTP下载的线程更新PyQt进度
2021-01-29 关注 0 浏览64 1答案