SwingUtilities.invokeLater()

1 resposta
B

Galera,

Preciso chamar uma tela, esperar 3 segundos e chamar uma operação web service. Acontece, que quando eu chamo a tela, ela aparece mas sem mostrar seus componentes (congelada), passam-se os 3 seg. e a operação é chamada. Vejam meu código:

ProgressBarView pbv = new ProgressBarView();
        pbv.setVisible(true);

        try
        {
            SwingUtilities.invokeLater(new Runnable()
                    {
                        public void run()
                        {
                            DiscaOperacao disca = new DiscaOperacao(ListaGruposRamaisForm.bufferRamais[0], ListaGruposRamaisForm.bufferRamais[1]);
                        }
                    });
                    Thread.sleep(3000);
        }
        catch (Exception exc)
        {
            exc.printStackTrace();
        }
            
        pbv.setVisible(false);

O que pode ser esse pau da tela “congelar” :?: Ah, já usei o repaint e nada!

1 Resposta

ViniGodoy

Não tem coisa invertida aí? A espera por 3 segundos é a última coisa que você faz.

Além disso, provavelmente esse método está diretamente implementado num botão, portanto, ele já roda na thread do Swing. O segredo seria dispara-lo numa thread separada.

Uma coisa que não entendi é… de onde surgiu esse tempo de “3 segundos”?

Criado 10 de janeiro de 2008
Ultima resposta 10 de jan. de 2008
Respostas 1
Participantes 2