JTextArea.append não aparece na mesma hora

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.

Ninguém nunca precisou fazer uma tarefa longa como parte de um evento?

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. :slight_smile:

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?