根据代码,可以看出Task只会执行一次是因为在call()方法中循环遍历完成后直接返回了null,并没有再次启动Task去执行。要解决这个问题,需要将call()方法中的逻辑移到一个循环方法里面,并且需要在这个循环方法内手动更新进度条。具体实现可以参考下面的示例代码:
Task<Void> task = new Task<Void>() {
@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;
}
};




