Pensando melhor, o ideal seria:
public void onClick(...) {
new Thread(new Runnable() {
for (int i = 0; i < 100000; i++) {
// verifica se eh primo e...
SwingUtilities.invokeLater(new Runnable() { // exibir progresso
em B };);
}
}).start();
}
2009/12/4 Flavio Costa <[email protected]>
>
>
> 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
>
--
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.