可以尝试将任务的for循环放在Task的call()方法中执行,而不是在Task的构造函数中执行。例如:
Task
@Override
protected Void call() throws Exception {
double total = (double) sheetFiles.length;
double progress = 0;
for (File sfile : sheetFiles) {
// 获取sfile的数据
ExportPojo exportPojo = ImportExcelUtils.importExcelToSheet(sfile.getPath(), ExcelPojo.class);
// 写出到指定文件
ImportExcelUtils.exportDataToSheet(file, exportPojo, zhu, fileName);
// 手动更新进度条
progress++;
updateProgress(progress, total);
}
return null;
}
};
// 绑定进度条的属性 progressBar.progressProperty().bind(task.progressProperty());
task.setOnSucceeded(event1 -> {
progressBar.setVisible(false);
// 关闭当前窗口或程序
Stage stage = (Stage) progressBar.getScene().getWindow();
stage.close();
});
// 执行Task new Thread(task).start();




