2009/12/2 Peter P. Lupo <[email protected]>

> Atualizar pode ser atualizar cada componente, todos os componentes, um
> painel que vc tenha colocado nele, o próprio painel retornado pelo
> getContentPane e pode ser em outra thread, na mesma thread, usando um
> observer para quando os dados forem modificados, no redesenho da tela ou do
> componente ou... enfim...
>

Estou tirando o atraso dessa lista e acabei passando por aqui.
Até onde eu sei atualizações da interface (pelo menos usando Swing/AWT) só
podem ser feitas caso o método seja invocado a partir da
EDT<http://en.wikipedia.org/wiki/Event_dispatching_thread>
.
Caso você atualize sua tela em outra thread, componentes podem não ser
renderizados ou ficarem renderizados pela metada ou qualquer outro
comportamento randômico. Então muito cuidado ao usar threads + Swing.

No próprio artigo da Wikipedia existe uma explicação do porque isso é
problemático e como contornar o problema (caso seja realmente necessário
executar uma atualização da sua tela a partir de uma outra thread (é só usar
a classe SwingUtitilities).

Um caso de uso seria. Imagine um botão A e uma barra de progresso B.
Ao clicar no botão ele executa uma tarefa custosa, então o ideal e lançar
uma thread para que isso seja feito.

Ex:
public void onClick(...) {
   // calcular todos os primos até 100000 e exibir progresso em B
}

O exemplo acima irá travar a sua interface durante o periodo do calculo e
provavelmente só irá exibir a barra em 0% e 100%, nenhum número entre eles.

public void onClick(...) {
  new Thread(new Runnable() {
      // calcular todos os primos até 100000 e exibir progresso em B
   }).start();
}

Usando o codigo acima você provavelmente vai ter sua interface livre para
continuar a ser usada mas a barra de progresso continua sem ser atualizada
ou ser atualizada erroneamente (com pequenos glitchtes)

public void onClick(...) {
  SwingUtilities.invokeLater(new Runnable() {
      // calcular todos os primos até 100000 e exibir progresso em B
   });
}

Agora tudo funciona numa boa.

Desculpem qualquer erro de sintaxe e coisas do gênero.


>
> Sem saber como vc estruturou a tela, organizou os componentes e quais
> componentes vc quer atualizar, fica MUITO difícil adivinhar o que vc quer,
> até pq a grd maioria deles, se vc usou uma implementação padrão, deveria
> atualizar sozinha quando houvesse uma mudança, dependendo de como vc esteja
> usando...
>
> Bom vc ter conseguido solucionar sozinho, agora não adianta vc dar 0,1 da
> informação que a gente precisa e depois perguntar se a gente não sabe seja
> lá o que...
>
> Abraço
>
>
> Peter P. Lupo
> MPS.BR Authorized Implementation Practitioner
> Certified ScrumMaster
> Sun Certified Java Associate
> http://sites.google.com/site/pplupo - http://craftnicely.blogspot.com
> +55 (021) 81742487
>
>
> 2009/12/2 Guilherme Bruzzi <[email protected]>
>
>> Eu acho que não dá pra atualizar todo o JFrame, acho que só dá pra
>> atualizar cada componente ou o JPanel, e atualizar pode ser só esconder
>> alguns elementos (o que tornaria as coisas mais fáceis) , por isso a dúvida
>> sakow?
>>
>>
>> 2009/12/2 Zaedy Sayão <[email protected]>
>>
>>> Bem, a galera ta tentando te ajudar e vc vem com uma resposta dessa....
>>>
>>> Primeiro pra gente te ajudar a gente tem q entender direito seu
>>> problema....
>>>
>>>
>>> []'s
>>>
>>> 2009/12/2 Leonardo F. Borba <[email protected]>
>>>
>>>> Obrigado, mas meu problema ja foi solucionado.
>>>>
>>>> Mas agora me ficou a duvida, ninguem aqui sabe o que eh refresh,
>>>> atualizar, ou algo do tipo num tela??!!!
>>>>
>>>> abracos
>>>>
>>>> 2009/12/2 Peter P. Lupo <[email protected]>
>>>>
>>>> updateUI()?
>>>>>
>>>>>
>>>>> Peter P. Lupo
>>>>> MPS.BR <http://mps.br/> Authorized Implementation Practitioner
>>>>> Certified ScrumMaster
>>>>> Sun Certified Java Associate
>>>>> http://sites.google.com/site/pplupo - http://craftnicely.blogspot.com
>>>>> +55 (021) 81742487
>>>>>
>>>>>
>>>>> 2009/12/2 Raul Barbosa <[email protected]>
>>>>>
>>>>> repaint()?
>>>>>>
>>>>>> 2009/12/2 Zaedy Sayão <[email protected]>
>>>>>>
>>>>>> O q vc chama de atualizacao no JFrame?
>>>>>>>
>>>>>>> O q vc tem nele?
>>>>>>>
>>>>>>> Se vc quer, por exemplo, retirar um componente q ja esta nele e
>>>>>>> colocar outro, por exemplo, ai vc tem q fazer isso na mao.
>>>>>>>
>>>>>>> Agora vc pode simplesmente deixar os componentes la escondidos e so
>>>>>>> mudar a visibilidade deles.
>>>>>>>
>>>>>>> Posta algum trecho de codigo do q vc ta pretendendo fazer pq esta bem
>>>>>>> vago e estou pensando zilhoes de coisas q vc pode estar tentando fazer.
>>>>>>>
>>>>>>> []'s
>>>>>>>
>>>>>>> 2009/12/2 Leonardo F. Borba <[email protected]>
>>>>>>>
>>>>>>> Professor, quero que ao existir alguma alteração na minha JFrame, ela
>>>>>>>> seja exibida automaticamente. Procurei na documentação da Sun, e não 
>>>>>>>> existe
>>>>>>>> um metodo que faça isso. Visitei alguns foruns e as soluções 
>>>>>>>> apresentadas
>>>>>>>> eram sobre a criação de um metodo que fizesse essa atualização, ou 
>>>>>>>> seja,
>>>>>>>> toda vez que eu quiser atualizar uma informação na tela, eu tenho que 
>>>>>>>> chamar
>>>>>>>> um metodo criado por mim.
>>>>>>>>
>>>>>>>> A minha duvida era saber se essa realmente é a melhor solução, a
>>>>>>>> criação de um metodo.
>>>>>>>>
>>>>>>>> 2009/12/2 Miguel Jonathan <[email protected]>
>>>>>>>>
>>>>>>>> Leoanrdo,
>>>>>>>>> explique melhor o que você quer fazer, e a que método você se
>>>>>>>>> refere, OK?
>>>>>>>>>
>>>>>>>>> Jonathan
>>>>>>>>>
>>>>>>>>>  On Wed, Dec 2, 2009 at 12:51 AM, Leonardo F. Borba <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> estava procurando na documentação da Sun, mas não achei sobre
>>>>>>>>>> algum metodo que atualize a minha JFrame, em foruns muitas soluções 
>>>>>>>>>> são
>>>>>>>>>> criar esse metodo. Existe outra forma de se fazer essse refresh da 
>>>>>>>>>> JFrame ou
>>>>>>>>>> so criando esse metodo??
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Leonardo F. Borba
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>>> Groups "Comp 2 - Geral" group.
>>>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>>>> .
>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>> [email protected]<comp2-geral%[email protected]>
>>>>>>>>>> .
>>>>>>>>>> For more options, visit this group at
>>>>>>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "Comp 2 - Geral" group.
>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>> [email protected]<comp2-geral%[email protected]>
>>>>>>>>> .
>>>>>>>>> For more options, visit this group at
>>>>>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Leonardo F. Borba
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Comp 2 - Geral" group.
>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> [email protected]<comp2-geral%[email protected]>
>>>>>>>> .
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Zaedy Dantas Sayão
>>>>>>> Graduando em Ciência da Computação DCC/UFRJ
>>>>>>> http://www.manufato.com.br/
>>>>>>> MSN: [email protected]
>>>>>>>
>>>>>>>  --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Comp 2 - Geral" group.
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> [email protected]<comp2-geral%[email protected]>
>>>>>>> .
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Raul B. Barbosa
>>>>>>
>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Comp 2 - Geral" group.
>>>>>> To post to this group, send email to [email protected].
>>>>>> To unsubscribe from this group, send email to
>>>>>> [email protected]<comp2-geral%[email protected]>
>>>>>> .
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>>
>>>>>
>>>>>  --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Comp 2 - Geral" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<comp2-geral%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Leonardo F. Borba
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Comp 2 - Geral" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<comp2-geral%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>>
>>>
>>>
>>>
>>> --
>>> Zaedy Dantas Sayão
>>> Graduando em Ciência da Computação DCC/UFRJ
>>> http://www.manufato.com.br/
>>> MSN: [email protected]
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Comp 2 - Geral" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<comp2-geral%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>
>>
>>
>>
>> --
>> Guilherme Heynemann Bruzzi
>>
>> Diretoria de Projetos
>>
>> EJCM – Empresa Júnior de Consultoria em Microinformática
>> Departamento de Ciência da Computação – UFRJ
>> www.ejcm.com.br - (21) 2598-9440
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Comp 2 - Geral" group.
>>
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<comp2-geral%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/comp2-geral?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<comp2-geral%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>



-- 
Flávio Coutinho da Costa

--

You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en.


Responder a