Cleto,
eu conheco muito bem o comando Application.ProcessMessages, pois
programei em 
Delphi por tres anos.

Sempre usei o comando no final de um loop que executava
um processamento longo, para atualizar um TGauge que
indicava o progresso do processamento.

Em Java, eh um pouco diferente. Uma vez que voce dispara um evento
dentro de um manipular de eventos, se
dentro da rotina do metodo manipulador voce inserir um
loop while onde no final voce insira um componente como
um gauge que indique progresso, nao vai funcionar. O problema tem a
ver com Threads. Se nao me engano, os despachos de eventos ocorrem na
mesma thread onde ocorre a pintura de tela, me parece que o nome eh
AWTThread. Como o gauge tem que ser repintado na mesma Thread onde o
evento gerado esta sendo tratado, o metodo paint() do gauge fica
bloqueado. A solucao eh
voce criar uma nova thread para processar o seu codigo,
e a partir desta thread, invocar a atualizacao do gauge, que ocorrera
em uma outra thread, independente.
Ai funciona, com certeza, pois ja fiz isso.
Se voce usa os componentes SWING, me parece que tem uma classe chamada
Timer que auxilia na atualizacao da interface grafica em
processamentos longos.
Da uma pesquisada.
Um abraco.
ANDRE.






---Cleto Henrique Andrade Silva <[EMAIL PROTECTED]> wrote:
>
> Oi pessoal,
> 
> gostaria de saber se existe em java algo equivalente ao m�todo
ProcessMessages da classe TApplication do Delphi. Isto �, alguma forma
de a minha aplica��o continuar trabalhando enquanto estou esperando
que algo aconte�a.
> 
> Tenho uma classe em Delphi que � assim (uma descri��o superficial da
classe):
> 
> 
> // TEditor � um componente gr�fico como por exemplo um frame
> 
> TEditor = class(TGraphicControl)                
> private
>     Clicou: boolean;
>     xclique, yclique: double;
>     procedure ClicouMouse(x, y: double);
> public
>     function DigitalizarPonto: TPonto;
> end;        
> 
> // Descri��o dos m�todos
> 
> // Este m�todo � chamado sempre que ocorrer o evento do clique do
mouse
> // Ent�o, quando o mouse � clicado eu recebo a coordenada onde foi o
clique
> procedure ClicouMouse(x, y: double);
> begin
>     xclique := x;
>     yclique := y;                                                   
      // armazena a coordenada onde foi clicado o mouse
>     Clicou := true;
> end;
> 
> function DigitalizarPonto: TPonto;
> var PontoClique: TPonto;
> begin
>     Clicou := false;
>     while (not Clicou) do
>         Application.ProcessMessages;                            //
aguarda at� que seja clicado o mouse
>     PontoClique := TPonto.Create(xclique, yclique);
>     Result := PontoClique;                                          
 // retorna o ponto do clique
> end;
> 
> 
> Obs: O m�todo ProcessMessages permite que a Fila de tarefas do
windows continue a ser processada enquanto eu estou preso no loop,
assim a aplica��o continua a fazer outras coisas inclusive o clique do
mouse.
> 
>     
> Eu poderia fazer este retorno do ponto clicado como um evento, mas
isto n�o � interessante. O que desejo � prender o fluxo de uma
sequ�ncia de c�digo at� que algo ocorra sem travar a aplica��o.
> 
>     Algu�m sabe como fazer algo equivalente a isto em java? Aguardo
ancioso!
> 
> 
> Obrigado!
> 
> 
> 
<HR>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>

<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META content='"MSHTML 4.71.1712.3"' name=GENERATOR>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT color=#000000 face=Arial size=2>Oi pessoal,</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT face=Arial size=2>gostaria de saber se existe em java algo 
equivalente ao m�todo ProcessMessages da classe TApplication do Delphi. 
Isto �, alguma forma de a minha aplica��o continuar 
trabalhando enquanto estou esperando que algo aconte�a.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>�</DIV>
<DIV><FONT face=Arial size=2>Tenho uma classe em Delphi que � assim
(uma 
descri��o superficial da classe):</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>�</DIV>
<DIV>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>
<DIV><FONT color=#000000 face=Arial size=2>// TEditor � um componente 
gr�fico como por exemplo um frame</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>TEditor = 
<STRONG>class</STRONG>(TGraphicControl)��������������� 
</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>private</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT><FONT color=#000000 face=Arial 
size=2>��� <FONT color=#000000>Clicou: 
boolean;</FONT></FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2><FONT 
color=#000000></FONT>��� xclique, yclique: 
double;</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� 
<STRONG>procedure</STRONG> ClicouMouse(x, y: double);</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>public</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT><FONT color=#000000 face=Arial 
size=2>��� <STRONG>function</STRONG> DigitalizarPonto: 
TPonto;</FONT></DIV>
<DIV><FONT color=#000000 face=Arial 
size=2><STRONG>end</STRONG>;������� 
</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>// Descri��o dos 
m�todos</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>// Este m�todo � 
chamado sempre que ocorrer o evento do clique do mouse</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT><FONT face=Arial
size=2>// 
Ent�o, quando o mouse � clicado eu recebo a coordenada onde foi o 
clique</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>procedure</STRONG> ClicouMouse(x,
y: 
double);</FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>begin</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT><FONT color=#000000 face=Arial 
size=2>��� <FONT color=#000000>xclique := x;</FONT></FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2><FONT 
color=#000000></FONT>��� yclique := 
y;��������������������������������������������������������� 
// armazena a coordenada onde foi clicado o mouse</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� Clicou := 
true;</FONT>�</DIV>
<DIV><FONT face=Arial size=2><STRONG>end</STRONG>;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2><STRONG>function</STRONG> 
DigitalizarPonto: TPonto;</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT><FONT face=Arial
size=2>var 
PontoClique: TPonto;</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT><FONT face=Arial 
size=2><STRONG>begin</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT><FONT color=#000000 face=Arial 
size=2>��� Clicou := false;</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� <FONT 
color=#000000>while (not Clicou) do</FONT></FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2><FONT 
color=#000000></FONT>������� 
Application.ProcessMessages;��������������������������� 
// aguarda at� que seja clicado o mouse</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� PontoClique := 
TPonto.Create(xclique, yclique);</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� Result := 
PontoClique;������������������������������������������� 
// retorna o ponto do clique</FONT>�</DIV>
<DIV><FONT face=Arial size=2><STRONG>end</STRONG>;</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>Obs: O m�todo
ProcessMessages 
permite que a Fila de tarefas do windows continue a ser processada
enquanto eu 
estou preso no loop, assim a aplica��o continua a fazer outras 
coisas inclusive o clique do mouse.</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� </FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2>Eu poderia fazer este
retorno do 
ponto clicado como um evento, mas isto n�o � interessante. O que 
desejo � prender o fluxo de uma sequ�ncia de c�digo 
at� que algo ocorra sem travar a 
aplica��o.</FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>��� Algu�m sabe 
como fazer algo equivalente a isto em java? Aguardo
ancioso!</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2>Obrigado!</FONT></DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV>
<DIV><FONT color=#000000 face=Arial size=2></FONT>�</DIV></BODY></HTML>


_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a