Rodar um GIF como um progressBar [RESOLVIDO]

8 respostas
G

Olá, estou com problema pra utilizar um gif como progressBar, eu do um visible(true) toda vez que executo algum processo demorado, mais o gif não é atualizado enquanto o outro processo esta sendo executado, estou tentando amarrar de alguma forma este gif a uma thread, mais não estou conseguindo, será que alguem tem algum exemplo que possa me ajudar?

Agradecido desde já.

8 Respostas

E

Qualquer processo longo deve ser delegado a uma thread (usualmente uma SwingWorker). Se o processo longo ficar na mesma thread do Swing, tudo (inclusive os gifs animados) ficará parado e não será atualizado corretamente.

G

Olá entanglement, vlw pela resposta, tenho problema para executar esse processo em uma outra thread, pois esse processo atualiza alguns componentes de tela, e acaba gerando exception (Thread safe), estou tentando usar o invokeAndWait, mais mesmo assim ocorre os erros. Se alguem tiver algum exemplo para me ajudar ficarei agradecido.

E

O cara que atualiza os componentes de tela deve usar invokeLater, não invokeAndWait.

E

Exemplo:

SwingUtilities.invokeLater (new Runnable() {
     public void run() {
          textArea.setText (String.format ("Esta eh a %d vez que passou por aqui", vez));
     }
 });
G

entanglement sua resposta me ajudou muito, o painel onde é exibido o gif já aparece na hora certa, porem o gif parece que não atualiza, ele aparece na tela mais não funciona a animação…vlw pela força

G

Estou usando esta função para executar meu processo demorado, porem parece q msm assim a tela fica congelada, estou usando a função corretamente??

SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                processarOperacao();
            }
        });
E

Não, é a operação lenta que tem de ficar em uma thread separada, e as coisas que ela precisa fazer (como atualizar um label ou um JTable) é que devem ser invocadas via invokeLater. invokeLater força o código que está no método run a rodar na thread do Swing.

G

Consegui resolver o problema, no processo principal usei SwingWorker, vlw pela ajuda entanglement.

abrç

Criado 6 de março de 2013
Ultima resposta 6 de mar. de 2013
Respostas 8
Participantes 2