private void jButtonExportActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_jButtonExportActionPerformed int count = 0; for (Object obj : exportObjs) { if (obj instanceof ROI) { count++; } if (obj instanceof ROI_Folder) { ArrayList<ROI> rois = ((ROI_Folder) obj).getROIs(); count += rois.size(); } } UIManager.put("ProgressBar[Enabled].foregroundPainter", new ProgressBarForegroundPainter()); final AVM_ProgressMonitor pm = new AVM_ProgressMonitor(rootPane, "Exporting ROIs", "", 0, count + 1); Executors.newSingleThreadExecutor() .submit( () -> { int progress = 0; for (Object obj : exportObjs) { if (obj instanceof ROI) { ROI roi = (ROI) obj; pm.setNote("Exporting " + roi.getParent().toString() + "\"" + roi.toString()); pm.setProgress(progress++); exportROI(roi); if (pm.isCanceled()) { return; } } if (obj instanceof ROI_Folder) { ArrayList<ROI> rois = ((ROI_Folder) obj).getROIs(); for (ROI roi : rois) { pm.setNote("Exporting " + roi.getParent().toString() + "\"" + roi.toString()); pm.setProgress(progress++); exportROI(roi); if (pm.isCanceled()) { return; } } } } pm.close(); setVisible(false); }); } // GEN-LAST:event_jButtonExportActionPerformed