0

这是我的进度条代码。但问题是当某些进程正在工作时进度和指示器不起作用。当我的代码运行时,进度条由 -1.0f 启动,最后由 1.0f 启动,我编写了循环所以进度条更新了。但这不起作用....我无法解决问题...以下代码适用于每次进度条由新值设置但在 GUI 上未呈现进度条时的线程。

Platform.runLater(new Runnable() {
                            @Override
                            public void run() {
                                progressBar.setProgress(currentNuggetCount);
                                progressIndicator.setProgress(progressBar.getProgress());
                                System.out.println(" > thread running > ");
                            }
                        });
4

1 回答 1

1

在 JavaFX 中,最好使用ServiceTask用于线程。这与进度条配合得非常好。

例如,您的视图上有一个 ProgressBar,您可以像这样绑定:progressBar.progressProperty().bind(yourservice.progressProperty);

在你的服务上是这样的:

Service s = new Service() {
    @Override
    protected Task createTask() {
        return new Task() {
            @Override
            protected Object call() throws Exception {
               for (int i = 0; i < 10; i++)
               {
                   updateProgress(i, 10);
               }
                return null;
            }
        };
    }
};

您的进度将自动更新。你也可以将你的 bar 的 visibleProperty 绑定到 service 的 runningProperty 上,并且 bar 只会在服务运行时显示

于 2013-06-17T12:20:09.363 回答