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();
}
[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: