boa tarde!
Alex Wds, irei demonstrar o uso de uma thread da
maneira que eu acho mais facil, primeiro sua classe deverá ter no cabeçalho a
implementação de Runnable e sua classe também deverá ter o método
abstrato Run(); então ficaria ± assim:
public class classeComThread implements Runnable {
…
codigo
…
public void actionPerformed(ActionEvent e) {
Thread t = new Thread();
t.start(this);
}
public void Run() {
//aqui vai o seu método de persistencia
ExportarBD exportar = new ExportarBD();
exportar.ExSP();
}
}
no método actionPerformed do botao, foi instanciado um objeto do tipo Thread, logo após esse objeto foi iniciado através do método start, e é passado por parametro a instancia da classe, entao quando iniciado, ele chama automaticamente o método abstrato Run(); e entao executa seus métodos de persistencia.
O progressBar poderia ser usado da seguinte maneira.
vou dar um pequeno exemplo, acho que deverá clarear. Bom, depois de devidamente declarado o progressBar, poderia ser feito ± assim:
for (i = 0; i < 100; i++) {
progressBar.setValue(i);
}
esse laço nao seria visivel, pois a tela congelaria se feito dessa maneira, e só veriamos o progressBar jah preenchido completamente. Para resolver isso, poderiamos colocar esse laço em uma Thread para que ele seja executado “em paralelo” com a Thread principal do seu programa. Porém esse método para setar o valor do progressBar, pode ser colocado no final do seu método de persistencia de maneira que a cada registro transferido ele atualizasse um determinado valor no progressBar.
E quanto ao problema do LionRick, eu acho que se vc passar um (this), referencia da sua classe que está chamando a thread, ao invés de passar a jprogressbar, no método start que inicia sua thread, resolveria seu problema.
Espero ter ajudado, qualquer duvida perguntem novamente, respondo assim que puder. t+