barra de progreso

con este codigo cuando mando a generar un reporte se llena una barra de progreso y al final cuando esta apunto de llenar se empieza a generar el reporte, la funcion de ver que esta pasado algo mientras se genera el reporte la cumple pero que debo hacer para la barra se cargue segun se demora el reporte en ejecutarse y no hacer lo que hize sw hacer un for para llenar la barra.

import java.util.Date;
import javax.swing.JProgressBar;
import java.util.List;
import javax.swing.SwingWorker;

public class BarraProgreso extends SwingWorker<Double, Integer>{
   
    private JProgressBar barraProgreso;
    private DataBase db;
    private String tituloReporte;
    private String rutaReporte;
    private IPersonaDTO persona;
    private Date fecha;
    public BarraProgreso(JProgressBar p,String rutaReporte,String tituloReporte,Date fecha, IPersonaDTO persona,DataBase db)
    {
        this.barraProgreso =p;
        this.db=db;
        this.tituloReporte=tituloReporte;
        this.rutaReporte=rutaReporte;
        this.fecha=fecha;
        this.persona=persona;
    }

   
    @Override
    protected Double doInBackground() throws Exception
    {
        for (int i = 0; i < 100; i++) {
           
           try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                System.out.println("interrumpido");
           
            }
           

            // Se pasa valor para la barra de progreso. ESto llamara al metodo
            // process() en el hilo de despacho de eventos.
            publish(i + 1);
        }
       
        // Supuesto resultado de la tarea que tarda mucho.
        return 100.0;
       
       
    }

    @Override
    protected void process(List<Integer> chunks)
    {
       
        this.barraProgreso.setValue(chunks.get(0));
    }
    @Override
    protected void done() {
       UtilPdf.generarPdf_CuadrePremios(0,rutaReporte, tituloReporte,persona,fecha, db);
     
    }
   
}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

cual seria la forma correcta

estoy buscando la mejor forma de cargar la barra de progreso segun se demora una colsulta ala base, en el ejemplo expuesto trato de simular un a carga con un for y cuando termino ese ciclo ejecuto el reporte, me gustaria que la barra de progreso se ajusto al tiempo en que demora ral al abrise el reporte.