Estou dando um append em um JTextArea e logo após chamando uma ação demorada na GUI. Eu queria saber um jeito de forçar a GUI a se atualizar antes de iniciar a ação demorada. Nota: eu não quero que a ação rode em outra thread, eu quero travar a aplicação mesmo, enquanto a ação não terminar, mas antes de começar a ação eu quero que o texto do JTextArea seja atualizado com o que eu já apendei. No Delphi era só chamar o update do componente se me lembro bem…
PS: dei uma olhada rápida sobre invokeLater e EDT mas não consegui “pescar” como eu usaria.
Não lembro quando nem como nem porque, mas as vezes setVisible(false) setVisible(true) resolve o problema.
É a melhor solução? Não! É elegante? Não!
Se você precisa disso pra ontem tente isso, senao tente encontrar uma outra solucao, refazer o codigo, tentar em outro componente tipo algum da SwingLabs… enfim…
Boa sorte.
Não sei é o que você está dizendo, mas resolvi assim:
No actionPerformed eu desabilito o frame e disparo o código em outra thread com prioridade normal. Assim eu desbloqueio a EDT, e o append aparece “na hora”, e no final a outra thread habilita o frame de novo.
Só fiquei sem entender a utilidade do SwingWorker…
Não entendi qual o mal de permitir que se force a atualização da GUI dentro do manipulador…
[quote=keller]Não lembro quando nem como nem porque, mas as vezes setVisible(false) setVisible(true) resolve o problema.
É a melhor solução? Não! É elegante? Não!
Se você precisa disso pra ontem tente isso, senao tente encontrar uma outra solucao, refazer o codigo, tentar em outro componente tipo algum da SwingLabs… enfim…
Boa sorte. :)[/quote]
isso nao seria para substituir o componnent.repaint?
não sei se é aplicavel pq isso serve qndo o esqma eh montado em tempo de execução…
ou eu que intendi mal?