Olá pessoal, estou com uma dúvida, tomara que possam me ajudar.
Tenho uma aplicação onde executo um arquivo .bat após o usuário clicar em um botão. No momento em que esse .bat estiver executando, tenho uma progressbar e quero que ela vá se preenchendo conforme o .bat executa.
Pois bem, passo os valores pra progressbar que criei, mas ela não atualiza conforme é chamada, depois que o .bat termina, ela já aparece 100% preenchida.
Pra explicar melhor, essa é a parte onde chamo a progressbar, passando os valores para preencher:
try {
while((s =result.readLine())!= null)
{
System.out.println(s);
if("1 arquivo(s) copiado(s)".equals(s)){
retorno++;
area.append(retorno+" arquivo(s) de "+cont+" copiado(s)\n");
new ProgressBar().executaProgresso(progresso, retorno, cont);
}
}
}
catch (IOException e) {
e.printStackTrace();
}
e aqui a progressbar:
public class ProgressBar {
JProgressBar barra;
public void executaProgresso(JProgressBar progresso, final int num, final int linhas){
this.barra = progresso;
barra.setMinimum(0);
barra.setMaximum(100);
barra.setStringPainted(true);
SwingWorker worker = new SwingWorker() {
protected Object doInBackground() throws Exception {
barra.setValue(Math.round((num/linhas)*100));
Thread.sleep(20);
System.out.println("num: "+num+"\nlinhas: "+linhas);
return null;
}
protected void done(){
}
};
worker.execute();
}
}
Reparem que dou um system.out pra ver se a classe realmente é chamada e os valores são passados corretamente, e estão sendo passados. Não sei como fazer pra progressbar atualizar em tempo de execução.
Obrigada.