【发布时间】:2014-03-31 05:22:38
【问题描述】:
我在这里有一个相当棘手的问题。
我有什么:
我目前正在制作一个 JavaFX 应用程序,该应用程序在屏幕上呈现一个图形(有很多节点和边)。我可以使用 Graphiz 库构建图形,它在我的屏幕上显示良好。但是图形渲染可能需要一些时间,因为我的图形可以包含 >1000+ 个节点,而且我在屏幕上绘制它们很慢。这是我的代码来做到这一点
protected synchronized void layoutWithGraphviz() {
if (listener == null)
listener = new LayoutResultListener();
Utils.CreateGraphLayout(this,
listener);
}
现在我的LayoutResultListener() 是一个侦听器,可确保视图上的顶点不会相互重叠/看起来不错,因此如果它们不重叠,我将重绘图形。这一切都完美无缺。
我需要什么:
我想要一个进度条来显示我的整体进度。现在,由于我不确定我的 LayoutResultLisener() 将被调用多少次,所以我可以接受不确定的进度条。然而棘手的部分是我不能将 UI 创建部分委托给后台线程,因为 JavaFX 不允许这样做。我看到它也记录在这里Concurrency in JavaFX
所以我不知道该怎么做,我不能将 UI 创建委托给后台线程。那么如何显示进度条呢?有什么想法吗?
【问题讨论】:
标签: java multithreading javafx task runnable