style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problema con JProgressBar con SwingWorker

Buenas tardes, Tengo una duda con el funcionamiento correcto de SwingWorker.

La estructura de mi proyecto es la siguiente:(Imagen adjunta)
Un package "Complementos" en el cual tengo clases de ayuda a la aplicación;
Un package "Empresa" en el cual tengo todas las clases de la aplicación entre ellas la clase de Control;
Un package "Interfaces" en el cual tengo todas las Interfaces de la aplicación entre ellas la Interfaz Principal e inicio de sesión;

En la ventana de inicio en el boton de inicio de Sesión tengo el siguiente código.

String usuario = this.txtUsuario.getText();
String clave = String.valueOf(this.jPassword.getPassword());
this.verificarCampos();

        if(this.myPrincipalForm.getmyEmpresa().verificarUsuario(usuario, clave)){
            if(this.myPrincipalForm.getmyEmpresa().verificarEstadoUsuario(usuario, clave)){    
                this.idUser = this.myPrincipalForm.getmyEmpresa().getIdUsuario(usuario);
                try {
                    this.myPrincipalForm = new FormPrincipal(this, this.idUser);
                    this.myPrincipalForm.setVisible(true);
                } catch (MalformedURLException ex) {
                    Logger.getLogger(FormInicioSesion.class.getName()).log(Level.SEVERE, null, ex);
                }
                this.txtUsuario.setText("");
                this.jPassword.setText("");
                this.dispose();
            }
            else
                Ventana.imp("ESTE USUARIO SE ENCUENTRA INACTIVO.", "SISTEMA");
            this.dispose();
        }
        else{
            this.intentos = this.intentos - 1;
            Ventana.imp("USUARIO O CONTRASEÑA INCORRECTOS. INTENTOS RESTANTES: "+this.intentos, "SISTEMA");
            this.txtUsuario.setText("");
            this.jPassword.setText("");
            this.txtUsuario.grabFocus();
            if(intentos == 0)
                this.desactivar();
                this.dispose();
        }

Lo que quiero es que mi aplicación muestre la barra de progreso mientras se realizan las validaciones de el usuario que ingresa y se realizan las consultas a la base de datos.

Realice el ejemplo [i]http://chuwiki.chuidiang.org/index.php?title=Ejemplo_sencillo_con_SwingWorker[/i] colocando la clase Worker en el Paquete de complementos (No se si este bien así).

@Override
protected Double doInBackground() throws Exception {
   // Mostramos el nombre del hilo, para ver que efectivamente
   // esto NO se ejecuta en el hilo de eventos.
   System.out.println("doInBackground() esta en el hilo "
      + Thread.currentThread().getName());

   // Un simble bucle hasta 10, con esperas de un segundo entre medias.
   for (int i = 0; i < 10; i++) {
      try {
         Thread.sleep(1000);
      } catch (InterruptedException e) {
         System.out.println("interrumpido");
      }
   }
   // El supuesto resultado de la operación.
   return 100.0;
}

Realice una prueba dejando este codigo en el botón de inicio.

Worker myWorker = new Worker(jProgressBar, 10);
myWorker.execute();

Y me muestra la barra de estado corriendo perfectamente.

Pero mi problema es que al colocar el resto del código no actualiza el JProgressBar porque tiene instrucciones despues que utilizan el EDT y no se como hacer que funcione pues si coloco la tarea pesada en el SwingWorker igual no actualiza la barra de estado.

AdjuntoTamaño
Project.png9.2 KB
InicioSesion.png35.56 KB
Worker.png36.05 KB

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.

SwingWorker

Te invito a leer esta entrada:

http://marcosrobertos.blogspot.cl/2017/07/java-swing-swingworker-y-el-hi...

Te dará informacion adicional para enfrentar tu problema, pero desde ya te adelanto que en el metodo doInbackground no debes tener codico que manipule los componentes swing, debes llamar al metodo publish de swingworker, el metodo publish creara un runnable que será despachado en el hilo EDT, llamando al metodo process(T t), y en el metodo process ahí es donde debes poner codigo para refrescar y manipular la GUI, nunca llamaras al metodo process, tu llamas al metodo publish y por debajo swingworker llamará a process

public String doInBackground() {

publish("Start to save the automated testcase");//ejecuta un runnable que será procesado en el metodo process de swingworker y en el hilo EDT
}

Acabo de ver las imagenes adjuntas, y efectivamente, en el metodo doInBackground estás manipulando componentes Swing, eso no es correcto.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">