Porque o Thread.sleep(miliseg); não funciona de maneira correta num evento?

2 respostas
Matchola

Bom pessoal,
Eu gostaria de saber porque em um evento o Thread.sleep(miliseg); não funciona de maneira correta. Tipo eu tenho uma imagem que vai mudando
de posição para fazer tipo uma animação. Só que para a animação ficar visível eu tenho que atrasar seus passos usando o Thread.sleep(miliseg);
Até ai funciona tudo bem só que quando eu coloco o código da animação dentro do evento de um botão (para que a animação só comece quando
o botão for acionado), o programa trava durante o tempo da animação e depois desse tempo aparece o resultado final da animação.
Eu gostaria de saber o porque disso e como resolver.

Obrigado a quem poder ajudar.

2 Respostas

T

Você está esperando na mesma thread que efetua o desenho das telas. (Isso costuma ocorrer se você tenta esperar no evento de tratamento de botão, por exemplo).

Isso faz com que ele espere e deixe tudo travado; só irá desenhar a figura depois que sair do evento do botão.

Você precisa trabalhar com threads e aprender a usar SwingUtilities.invokeAndWait ou invokeLater.

otavio

Funcionar, funciona, e muito bem. Você deve ler um pouco mais sobre threads, assunto que aliás é bem interessante.

Criado 29 de julho de 2009
Ultima resposta 29 de jul. de 2009
Respostas 2
Participantes 3