[RESOLVIDO]Setar linha em jTextArea

4 respostas
evertonsilvagomesjav

Bom dia a todos!!

Eu tenho um arquivo txt, onde estou lendo e setando as linhas em um jTextArea, porem so esta setando a ultima linha, segue o codigo:

private void visualizar(java.awt.event.ActionEvent evt) {                            

        LerArquivo ler = new LerArquivo();

        ler.lerArquivo();

        SetaArquivo set = new SetaArquivo();

        String dados[] = set.setArquivo();

        for(String linha : dados){

            jTextArea.setText(linha);
        }
        

    }

Classe que le o arquivo:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author everton
 */
public class LerArquivo {

    File file;
    FileReader fileReader;
    BufferedReader bufferedReader;
    String linha = "";
    String retorno = "";

  
public String lerArquivo(){
       
    try{

    file = new File(System.getProperty("user.dir") + File.separator + "clientes.txt");

    fileReader = new FileReader(file);

    bufferedReader = new BufferedReader(fileReader);

    while((linha = bufferedReader.readLine()) != null){

            retorno += linha +"\n";
       }


}catch(FileNotFoundException e){
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}finally{
    if(bufferedReader != null){
try {
    bufferedReader.close();
} catch (IOException e) {
    e.printStackTrace();
}
}
}
        return retorno;
}
}

Classe que pega o retorno do arquivo e joga no array.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author everton
 */
public class SetaArquivo {


    public String[] setArquivo(){

        LerArquivo ler = new LerArquivo();

        String arquivo = ler.lerArquivo();

        String dados[] = arquivo.split("\n");

        return dados;

     }

}

4 Respostas

lina

Oi,

Você tem que fazer.:

private void visualizar(java.awt.event.ActionEvent evt) {                            

        LerArquivo ler = new LerArquivo();

        ler.lerArquivo();

        SetaArquivo set = new SetaArquivo();

        String dados[] = set.setArquivo();

        for(String linha : dados){

            jTextArea.setText(jTextArea.getText()+linha); // Aqui você estava sobreescrevendo o conteudo. Primeiro você tem que pegar o texto antigo e concatenar com o novo.
        }
        

    }

Tchauzin!

evertonsilvagomesjav

Lina muito obrigado deu certo. Deixa ver se entendi, corrija-me por favor se estiver errado.

jTextArea.getText()+linha

No trecho a cima e chamado getText e concatenado a primeira linha, em seguida como foi atribuida a primeira linha ao metodo ele busca esta linha e concatena com a segunda e assim em diante. E isso mesmo Lina?

lina

Oi,

Na realidade o método getText() retorna o conteudo texto de dentro do componente.

Exemplo.:

JTextArea teste = new JTextArea();
teste.setText("Oi, eu sou um JTextArea"); // estou utilizando um set, ou seja, setando um texto para dentro do JTextArea.

Como eu faria para mostrar o conteudo de dentro do JTextArea?

System.out.println(teste.getText()); // Será apresentado a mensagem: Oi, eu sou um JTextArea

Sendo assim, qundo você faz: getText()+linha significa que você irá pegar o conteudo que já extiste no JTextArea e concatenar com a nova linha.

Tchauzin!

evertonsilvagomesjav

hum ok muito obrigado.

Criado 30 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 4
Participantes 2