Barra de Progresso ao executar uma classe

3 respostas
M

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?

3 Respostas

R

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

V

também tenho esta mesma dúvida.

R

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.
    
Criado 10 de maio de 2011
Ultima resposta 11 de mai. de 2011
Respostas 3
Participantes 3