JavaFX Task Progress Bar

import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  public static void main(String[] args) {
    launch();
  }

  @Override
  public void start(Stage stage) {

    // La tâche à exécuter
    Task < Void > task = new Task < Void > () {
      @Override
      protected Void call() throws Exception {
        // Avancement total
        int totalProgress = 100;

        // Fausse tâche
        for (int i = 0; i < totalProgress + 1; i++) {
          Thread.sleep(50);
          // Mise à jour de l'avancement
          updateProgress(i, totalProgress);
        }
        return null;
      }
    };

    // La barre de progression
    var progressBar = new ProgressBar();

    // Binding sur l'avancement
    progressBar.progressProperty().bind(task.progressProperty());

    // Démarrage de la tâche
    new Thread(task).start();

    var scene = new Scene(new StackPane(progressBar), 640, 480);
    stage.setScene(scene);
    stage.show();
  }

}

Commentaires