Pq há diferença entre TextArea e System.out?

2 respostas
LucasRey

Olá amigos,

Estou tendo problemas com o seguinte:
Tenho um aplicação J2SE, que ao ser precionado um botão, a aplicação escreve no TextArea alguns dados. Porem, esses dados só aparecem no TextArea quando tudo que estava dentro do evento onMouseClicked do botão acaba. E o que eu queria é que os dados fossem aparecendo no TextArea conforme eu mandasse, por exemplo codigo:

for(int i = 0; i<10; i++)

{

textAreaTeste.append("numero: " + i);

Thread.sleep(1000);

}

Nesse codigo, por exemplo, aparece “[telefone removido]” no TextArea, porem, só aparece quando tudo dentro do botão foi executado, ou seja, aparece tudo de uma vez só, e não aos poucos como eu quero.

Isso já não ocorre quando eu uso o System.ou.print no lugar do textAreaTeste.append.

Alguem tem algo para me ajudar???

2 Respostas

P

olá,

Eu acho que deve ser algum problema de prioridade na execução dos processos.
Tente utilizar uma Thread para jogar o texto no JTextArea que você não vai ter problemas com prioridade.

Testei o código abaixo aqui e funcionou:

import javax.swing.JTextArea;

/**
 *
 * @author Paulo Sampaio
 */
public class TesteThread extends Thread
{
    JTextArea text;
    /** Creates a new instance of TesteThread */
    public TesteThread(JTextArea j)
    {
        text = j;
    }
    
    public void run(){
        try
        {
            for(int i = 1; i <= 10; i++ ){
                text.append(""+i);
                this.sleep(1000);
            }
            this.interrupt();
        } catch (InterruptedException ex)
        {
            ex.printStackTrace();
        }
    }
    
}

No evento do seu botão coloque o seguinte código:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)                                         
    {                                             
        new TesteThread(jTextArea1).start();
    }

Abraços,

LucasRey

Putz cara, muito obrigado, vou testar isso ae e te dar um feedback.
Valeu.

Criado 15 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 2
Participantes 2