javafxui创建与维护;进度条更新
我这里有一个相当棘手的问题 我所拥有的: 我目前正在制作一个JavaFX应用程序,它在屏幕上呈现一个图形(有很多节点和边)。我能够使用Graphiz库构建图形,它在我的屏幕上显示良好。但是图形渲染可能需要时间,因为我的图形可以包含>1000+个节点,并且我在屏幕上绘制它们的速度很慢。这是我的代码javafxui创建与维护;进度条更新,java,multithreading,javafx,task,runnable,Java,Multithreading,Javafx,Task,Runnable,我这里有一个相当棘手的问题 我所拥有的: 我目前正在制作一个JavaFX应用程序,它在屏幕上呈现一个图形(有很多节点和边)。我能够使用Graphiz库构建图形,它在我的屏幕上显示良好。但是图形渲染可能需要时间,因为我的图形可以包含>1000+个节点,并且我在屏幕上绘制它们的速度很慢。这是我的代码 protected synchronized void layoutWithGraphviz() { if (listener == null) listener = new L
protected synchronized void layoutWithGraphviz() {
if (listener == null)
listener = new LayoutResultListener();
Utils.CreateGraphLayout(this,
listener);
}
现在,我的LayoutResultListener()
是一个监听器,它可以确保视图上的顶点不会相互重叠/看起来不错,因此如果它们不重叠,我会重新绘制图形。这一切都很完美
我需要什么:
我想要一个进度条来显示我的总体进度。现在,由于我不确定将调用我的LayoutResultLisener()多少次,所以我可以使用不确定的进度条。然而,棘手的是,我不能将UI创建部分委托给后台线程,因为JavaFX不允许这样做。我在这里也看到了记录
所以我不知道该怎么做,我无法将UI创建删除到后台线程。那么如何显示进度条呢?有什么想法吗?尝试将您的UI创建代码包装在:
Platform.runLater(new Runnable(){
@Override
public void run() {
//your JAVAFX UI codes
}
});