Estoy utilizando una tarea (Task) para generar un reporte con la librería JasperReports, el reporte se genera correctamente y lo guardo en un archivo, pero me gustaría actualizar un progressbar mientras la tarea se ejecuta, he leído en varias publicaciones que se hace con un ciclo for() sin hacer ninguna tarea extra por lo que no me queda muy claro como hacerlo, agrego el código que tengo hasta el momento.
private void saveReport(ActionEvent event){ FileChooser fileChooser = new FileChooser(); FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Reporte (*.pdf)", "*.pdf"); fileChooser.getExtensionFilters().add(extFilter); File file = fileChooser.showSaveDialog(((Node) (event.getSource())).getScene().getWindow()); if(file != null){ //System.out.println(file.getPath()); Task<JasperPrint> printTask = new Task<JasperPrint>() { @Override protected JasperPrint call() throws Exception { Connection mConnection = DBTools.getConnection(); BufferedImage image = ImageIO.read(Reporter.class.getResource("/scai/cbta52/images/sep.png")); Map parameters = new HashMap(); parameters.put("REQ_ID", reqIDD.getText()); parameters.put("logoSep", image ); InputStream is = Reporter.class.getResourceAsStream("/scai/cbta52/reports/Requisition.jasper"); JasperReport jrep = (JasperReport) JRLoader.loadObject(is); JasperPrint jprint = JasperFillManager.fillReport(jrep, parameters, mConnection); //updateProgress(is., System.currentTimeMillis()); //System.out.println("Progress: "+getProgress()); return jprint; } }; printTask.setOnSucceeded(eventW -> { if(printTask.getValue() != null){ try { OutputStream output = new FileOutputStream(file.getPath()); JasperExportManager.exportReportToPdfStream(printTask.getValue(), output); output.close(); } catch (IOException |JRException e) { e.printStackTrace(); } } }); exec.execute(printTask); } }