javafxui创建与维护;进度条更新

javafxui创建与维护;进度条更新,java,multithreading,javafx,task,runnable,Java,Multithreading,Javafx,Task,Runnable,我这里有一个相当棘手的问题 我所拥有的: 我目前正在制作一个JavaFX应用程序,它在屏幕上呈现一个图形(有很多节点和边)。我能够使用Graphiz库构建图形,它在我的屏幕上显示良好。但是图形渲染可能需要时间,因为我的图形可以包含>1000+个节点,并且我在屏幕上绘制它们的速度很慢。这是我的代码 protected synchronized void layoutWithGraphviz() { if (listener == null) listener = new L

我这里有一个相当棘手的问题

我所拥有的:

我目前正在制作一个JavaFX应用程序,它在屏幕上呈现一个图形(有很多节点和边)。我能够使用Graphiz库构建图形,它在我的屏幕上显示良好。但是图形渲染可能需要时间,因为我的图形可以包含>1000+个节点,并且我在屏幕上绘制它们的速度很慢。这是我的代码

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
    }

});