Ola Pessoal,
Gostaria de pedir uma ajuda.
Estou precisando criar uma tela com uma barra de progresso ao executar uma classe.
Algúem pode me ajudar?
Ola Pessoal,
Gostaria de pedir uma ajuda.
Estou precisando criar uma tela com uma barra de progresso ao executar uma classe.
Algúem pode me ajudar?
A classe SwingWorker ajuda você a fazer isso:
http://download.oracle.com/javase/tutorial/uiswing/concurrency/interim.html
http://www.java2s.com/Code/Java/Swing-JFC/SwingworkerExample.htm
http://albertattard.blogspot.com/2008/09/practical-example-of-swing-worker.html
também tenho esta mesma dúvida.
Segue a solução que uso em Java para acompanhar o andamento de tarefas longas através de uma barra de progresso:
Codifique a tarefa longa como uma classe que implementa Runnable ou deriva de Thread. A lógica da tarefa longa deve ser codificada no método run(). A tarefa longa deve ser executada numa thread em separado da Thread de Eventos do Swing. Se a tarefa longa foi criada sobre Runnable, deve ser executada via new Thread(run).start(). Se foi criada sobre Thread, deve ser executada via tarefa.start().
A tarefa longa deverá emitir, em seu método run(), notificações periódicas à barra de progresso , que é exibida pela Thread do Swing. Para isso, a tarefa longa pode usar o método SwingUtilities.invokeLater().
Seqüência recomendada para obter o efeito desejado:
1 - Crie (mas não inicie) o objeto Runnable ou Thread que representa a tarefa longa;
2 - Crie (mas não exiba) um JDialog, passando o objeto de tarefa;
3 - Exiba o JDialog, executando então o objeto de tarefa;
4 - O objeto de tarefa notificará periodicamente seu andamento ao JDialog, usando a técnica descrita na seção anterior. Quando o objeto de tarefa concluir sua execução, o JDialog deve ser fechado.