通过javaFX中的线程更新ProgressBar

问题描述 投票:0回答:1

我正在研究一个使用JavaFX的ProgressBar的Java项目。根据我在StackOverflow上发现的信息,通常需要添加一个线程,或者程序需要实现Runnable,以便动态更新ProgressBar的值,例如程序在for循环中运行时。

但是,我仍然无法确定java.doc和stackoverflow中的答案,我还是不确定如何解决问题的最佳方法。

由于我对JavaFX完全不了解,所以任何人都可以给我一些提示吗?

下面是该项目提供的Application.java

public class MyApplication extends Application {

    private static final String UI_FILE = "/ui.fxml";
    @Override
    public void start(Stage stage) throws Exception {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource(UI_FILE));
        VBox root = (VBox) loader.load();
        Scene scene =  new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Team T-03: Course Scraper");
        stage.show();
    }
    public static void main(String args[]) {
        Application.launch(args);
    }
}

我应该实现相关循环和方法的Controller.java

public class Controller {
    @FXML
    private ProgressBar progressbar;

    @FXML
    void doSomething() {
        for (String object : objectList) {
            List<someObject> v = someOtherFunc(object);
            totalObjectCount += v.size();
            progress = (double) ++objectCount / v.size();
            progressbar.setProgress(progress);
        }
    }
}
java javafx runnable
1个回答
1
投票

使用Task,并在新的Task中运行它。 Thread有其自己的progress属性,并且确保对进度进行更改的Task方法在FX Application Thread上执行。然后,您可以将进度条的进度绑定到任务的:

updateProgress
© www.soinside.com 2019 - 2024. All rights reserved.