Bonjour,

Je vous sollicite car j'ai un problème que je ne comprend absolument pas.
J'ai dans mon application javafx, une fonction qui me permet de télécharger un fichier sur un serveur ftp à l'aide d'une boucle. Et je souhaiterais afficher une progress bar permettant de visualiser l'avancement du téléchargement. J'ai donc créé une interface fxml avec son controller et j'appelle à chaque itération de la boucle de téléchargement une fonction devant modifier la valeur de la progress bar. Mais visuellement la barre ne change pas. Je ne comprend pas se qui se passe...
Classe téléchargement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(fichierlocal));
            InputStream inputStream = ftpClient.retrieveFileStream(CheminFichierDistant + titre);
 
            byte[] bytesArray = new byte[4096];
            int bytesRead = -1;
            //tant qu'on a pas atteint la fin
            int transferé = 0;
            double pourcentage = 0;
            controller = mainApp.showProgressionBarre();
 
            while ((bytesRead = inputStream.read(bytesArray)) != -1) {
                //on écrit les octets dans l'emplacement précisé
                outputStream.write(bytesArray, 0, bytesRead);
                transferé += bytesRead;
                pourcentage = (transferé * 100 / size);
 
                controller.setPourcentageAvancement(pourcentage);
 
            }
 
            //fermer les flux de lecture de d'écriture
            inputStream.close();
            outputStream.close();
Controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ProgressionBarreController implements Initializable {
 
    private MainApp mainApp;
    private Stage dialogStage;
 
    private double pourcentageAvancement;
 
    @FXML
    private ProgressBar avancementBox;
    @FXML
    private Label avancementLbl;
 
    public void setMainApp(MainApp mainApp) {
        this.mainApp = mainApp;
    }
 
    public void setDialogStage(Stage dialogStage) {
        this.dialogStage = dialogStage;
    }
 
    public void setPourcentageAvancement(double avancement) {
        this.pourcentageAvancement = avancement;
        avancementBox.setProgress(pourcentageAvancement / 100);
        avancementLbl.setText("Patientez... " + pourcentageAvancement + "%");
        System.out.println("pourcentage : " + pourcentageAvancement + "%");
    }
 
    @Override
 
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }
 
}
MAIN d'où je lance la fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public ProgressionBarreController showProgressionBarre() {
        try {
            //Créer une nouvelle fenêtre
            progressionBarreStage = new Stage();
 
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("View/progressionBarre.fxml"));
            AnchorPane page = (AnchorPane) loader.load();
 
            progressionBarreStage.setTitle("Avancement du téléchargement");
            progressionBarreStage.getIcons().add(new Image("/App/Images/Icone_UCH.png"));
            progressionBarreStage.initModality(Modality.NONE);
            Scene scene = new Scene(page);
            progressionBarreStage.setScene(scene);
            progressionBarreStage.setResizable(false);
 
            ProgressionBarreController controller = loader.getController();
            controller.setDialogStage(progressionBarreStage);
            controller.setMainApp(this);
 
            progressionBarreStage.show();
 
            return controller;
 
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
 
    }

Es que quelqu'un comprend se qui se passe ? Par avance merci pour vos retours.