JavaFX - Espace de disque avec File ProgressBar

import java.io.File;
import java.text.NumberFormat;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

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

  @Override
  public void start(Stage stage) {
    // Positionnement vertical centré espacé de 10px
    VBox root = new VBox();
    root.setAlignment(Pos.CENTER);
    root.setSpacing(10);

    // Le dossier racine
    File file = new File("C:/");

    // Espace libre et total
    double usableSpace = file.getUsableSpace();
    double totalSpace = file.getTotalSpace();

    // Calcule l'espace utilisé
    long usedSpace = (long)(totalSpace - usableSpace);

    ProgressBar progressBar = new ProgressBar();
    // Calcule le pourcentage
    progressBar.setProgress(1 - (usableSpace / totalSpace));

    // Formateur
    NumberFormat formatter = NumberFormat.getInstance();

    // Formate les libellés
    String formattedUsedSpace = String.format("Espace utilisé : %s octets", formatter.format(usedSpace));
    String formattedFreeSpace = String.format("Espace libre : %s octets", formatter.format((long) usableSpace));
    String formattedTotalSpace = String.format("Espace total : %s octets", formatter.format((long) totalSpace));

    // Ajoute les composants à l'élément racine
    root.getChildren().add(new Label("Utilisation du disque C:/"));
    root.getChildren().add(progressBar);
    root.getChildren().add(new Label(formattedUsedSpace));
    root.getChildren().add(new Label(formattedFreeSpace));
    root.getChildren().add(new Label(formattedTotalSpace));

    Scene scene = new Scene(root, 640, 480);
    stage.setScene(scene);
    stage.setTitle("Informations C:/");
    stage.show();
  }

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

}

RĂ©sultat :

Commentaires