ProgressBar不适用于fxml文件和控制器

所以我用这个链接来设置我的进度条,当我运行这段代码时,它运行得非常好。

但是,通过我的设置,我似乎无法获得实际更新的进度条… progressBar.getProgress()实际上获得了正确的进度,但UI未更新。 这是迄今为止的代码:

Main.java

public class Main extends Application { @Override public void start(Stage primaryStage) { try { FXMLLoader loader = new FXMLLoader(Main.class.getResource("ProgressBarLayout.fxml")); AnchorPane root = (AnchorPane) loader.load(); Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } 

ProgressBarController.java

 public class ProgressBarController { private Task copyWorker; @FXML private ProgressBar progressBar; @FXML private void onButtonClick() { progressBar = new ProgressBar(0); progressBar.setProgress(0); copyWorker = createWorker(); progressBar.progressProperty().unbind(); progressBar.progressProperty().bind(copyWorker.progressProperty()); new Thread(copyWorker).start(); } public Task createWorker() { return new Task() { @Override protected Object call() throws Exception { for (int i = 0; i < 10; i++) { Thread.sleep(2000); updateMessage("2000 milliseconds"); updateProgress(i + 1, 10); System.out.println(progressBar.getProgress()); } return true; } }; } } 

ProgressBarLayout.fxml

         

在你的控制器中你做:

  progressBar = new ProgressBar(0); 

这意味着它将创建一个新的ProgressBar实例,它将不再使用你的FXML中的progressBar。 只要删除这一行,它应该工作