Pessoal,
Tenho aqui um programa que possui um SwingWorker instanciado dirétamente na classe.
Eu gostaria que esse mesmo SwingWorker rodasse e parasse sempre que um processo inicia e termina.
No exemplo abaixo, o SwingWorker funciona normalmente quando o primeiro processo é iniciado, porém quando o segundo processo é iniciado, o mesmo simplesmente não roda.
Para efeito de testes, fiz uma cópia do mesmo SwingWorker com um nome diferente e atribuí essa cópia ao segundo método. Apesar de ter ficado horrível, funcionou, mas eu gostaria de uma dica de como fazer isso escrevendo esse código apenas uma vez sem ter que fazer gambiarras.
Seguem os códigos:
SwingWorker sw_display = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
while(FrmMain.isRunning){
lbl_step.setText(FileProperties.step);
lbl_add_info.setText(FileProperties.add_info);
progress_bar.setValue((int)FileProperties.completed_percentage);
pb_sub_process.setValue((int)FileProperties.sub_process_percentage);
}
return null;
}
public void done(){
System.out.println("FIM");
}
};
public void process1(){
FrmMain.isRunning=true;
// Um código qualquer (ao final do código isRunning recebe false)
sw_display.execute();
}
public void process2(){
FrmMain.isRunning=true;
// Um código qualquer (ao final do código isRunning recebe false)
sw_display.execute();
}
Agradeço desde já!