java - 动态加载 GridPane 时显示 ProgressBar

标签 java multithreading javafx

嘿哟,

所以我目前正在开发一个 JavaFX 项目,另一个 Java 项目负责处理/提供该项目的数据。

虽然我已经完成了大部分工作,但我仍在尝试在从数据项目加载数据时加载 ProgressBar,但我在执行此操作时遇到了一些问题。

目前,我正在循环访问数据,为每个“条目”创建/添加标签到 GridPane。在其上方,我声明了一个 JavaFX ProgressBar 并将其添加到我的“根包装器” VBox

            GridPane wrapper = new GridPane();
            ProgressBar progress = new ProgressBar();    
            viewBox.getChildren().add(progress);           

            int currentRow = 1;     
            for(Map.Entry<String, List<Observation>> item : handler.get(from, to).entrySet()) {                    
                if(item != null) {
                    for(Observation inner : item.getValue()) {
                        if(inner != null) {
                            // Add the data for the datalist
                            wrapper.add(new Label(item.getKey()), 0, currentRow);
                            wrapper.add(new Label(inner.getDate().toString()), 1, currentRow);
                            wrapper.add(new Label(String.valueOf(inner.getValue())), 2, currentRow);

                            currentRow++;
                        }
                    }
                }
            }

            viewBox.getChildren().add(wrapper);

现在,对于我试图实现这一目标的事情,因为我意识到仅靠这段代码不会做太多事情:

1) 尝试将 GridPane 包装在 Task 中并从所述任务创建一个新线程 - 由于尝试在不在 JavaFX 应用程序线程中创建 JavaFX 元素而无法工作

2) 尝试包装所有 wrapper.add(new Label(...));Platform.runLater() - 如wrapper不是最终的,需要同时存在于范围内和范围外,这也不起作用。

3) 尝试将数据条目逐个添加到临时映射中,并通过让 ProgressBar 部分在其自己的任务/线程中运行来显示进度。只要我使用 Thread.join(); 似乎就可以工作后来,但似乎极其无效。

一如既往,我们非常感谢任何和所有的帮助。如果我忘记提及一些需要能够告诉我发生了什么的事情,请告诉我!我尝试包含所有相关内容。

提前致谢!

最佳答案

创建进度条后,它会显示在 GUI 使用中

progress.setProgress(double value)

根据您的进度设置适当的值。

例如,您可以将进度如下所示:

progress.setProgress((currentRow - 1) / handler.get(from, to).entrySet().size())

该行可以作为 for 循环中的第一行。当整个作业完成后,将进度设置为 1 或删除进度条。

关于java - 动态加载 GridPane 时显示 ProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53300726/

相关文章:

java - 在 Java 中生成随机唯一序列

android - 如何在android上实现实时音频处理?

java - 因实现信使计划而迷失

java - 捆绑的 JavaFX 应用程序使用非英语参数运行时抛出 "Could not start JVM"

macos - 在 OS X 上以编程方式隐藏(但不退出)应用程序

java - Managed Runtime Initiative 的内核补丁和 JVM 中到底有什么?

java - 如何使用Spring StandardPasswordEncode和Get Salt Generate?

Java SOAP 类不存在

c++ - 使用 Visual C++ 开发人员工具运行的代码块

java - 如何在 Controller 类中引用 Stage?