Problema chato com JProgressbar

Estou há algum tempo já com esse problema. Em certas partes do programa o processo demora e o usuário pode achar que ele travou. Então preciso de uma progressbar. Só que ainda não consegui o resultado esperado. Algumas das tentativas que fiz:

Tentativa: iniciar classe da progressbar na classe do hibernate.
Problema: ela funciona, porém não atualiza a tela enquanto o processo nao acabar.

Tentativa: fazer uma nova thread, colocar só a classe da progresbar dentro dela e iniciar logo depois.
Problema: o mesmo citado acima.

Tentativa: fazer uma nova thread e colocar todo o método da classe do hibernate dentro dela.
Problema: o hibernate gera exceções sem lógica. Uma hora aparece erro, outra hora não. Sem a thread o código funciona normalmente.

Eu sinceramente não sei mais o que fazer. Se alguém tiver uma idéia do que posso fazer pra progressbar aparecer sem travar e a outra classe continuar funcionando normalmente, peço por favor que poste aqui.

Putz, thread com swing é pedir pra penar…
Tenta entender como funcionam as threads no swing, massssss…

na ação do botão que dispara o evento para fazer algumac oisa demorada, chama O EVENTO DEMORADO em uma nova thread, e abre a janela com a ProgressBar NA MESMA THREAD da tela…

Algo assim:

public void actionButton(){
   new Thread(){
      public void run(){
         doSomethingInDB();
         stopPorgressBar();
      }
   }.start();
   showProgressBar();
}

Acho que funciona… ACHO.

[quote=brlima]Putz, thread com swing é pedir pra penar…
Tenta entender como funcionam as threads no swing, massssss…

na ação do botão que dispara o evento para fazer algumac oisa demorada, chama O EVENTO DEMORADO em uma nova thread, e abre a janela com a ProgressBar NA MESMA THREAD da tela…

Algo assim:

public void actionButton(){
   new Thread(){
      public void run(){
         doSomethingInDB();
         stopPorgressBar();
      }
   }.start();
   showProgressBar();
}

Acho que funciona… ACHO.[/quote]

Sua solução funciona, é muito parecida com uma das tentativas que citei, porém dá erro na classe do hibernate que é o evento demorado. Aparece o seguinte erro: