> Disponho de uma classe(derivada de Canvas) que
> atualiza constantemente certas informacoes na tela,
> atraves da verificacao do conteudo de uma variavel,
> valendo-se do metodo repaint() para redesenhar alguns
> graficos. 
> A modificacao do valor da variavel eh feita dentro de
> um loop while, atraves da chamada de um metodo publico da classe, que
> por sua vez incrementa a variavel e invoca o repaint(), tipo:
> 
>     while (true) {
>       meuObjeto.atualiza();
>       // segue mais algum codigo...
>     }
> 
> No entanto, somente ao sair do loop, os graficos sao gerados e
> apresentados na tela, apesar da variavel de
> atualizacao, interna da classe, ser incrementada, isso eu testei. Eh
> como se os eventos de pintura fossem colocada na fila de eventos e nao
> fossem despachados, apenas no final do loop. Acontecia muito isso
> quando eu programava em Pascal, no Delphi, quando colocava um Gauge de
> verificacao de processamento dentro de um loop. So era atualizado apos
> a saida do loop. Resolvi colocando logo apos a chamada do metodo de
> atualizacao do Gauge, uma chamada a uma funcao de nome
> processmessages() que forcava o processamento das mensagens acumuladas
> na fila de eventos. Cheguei onde eu queria: Em Java existe algo
> similar? 
> Agradeco antecipadamente.
> Andre.

        Andr�,

        A atualiza��o da tela � feita por uma Thread rodando com baixa
prioridade, ou seja, somente ser� executada quando outras tarefas lhe
permitirem ser executada.

        Provavelmente o seu loop roda constantemente n�o deixando tempo para
a AWTThread (a thread de desenho de tela) rodar.

        Tente colocar no seu loop uma instru��o do tipo Thread.sleep(100) ou
Thread.yield(). Tente v�rios valores para o sleep() e veja o que melhor
funciona para seu caso.


        Uma pergunta: Por que voc� n�o cria uma conta de e-mail pr�pria em
vez usar o da Simone? Isto gera confus�o. Existe uma infinidade de servi�os
de e-mail gratuitos.


Vanei Anderson Heidemann
Senior Programmer
Sun Certified JAVA Programmer
Technology Center
DATASUL S.A.

"Preste aten��o ao que est� fazendo, o ontem j� lhe fugiu das m�os, o amanh�
ainda n�o chegou."

For my always up-to-date contact information, click here:
http://www.planetall.com/main.asp?cid=1073200
It's private, secure, and free!

Vanei Anderson Heidemann.vcf

  • repaint() Simone Freire
    • Vanei Anderson Heidemann

Responder a