JTextArea

Alguém sabe me dizer qdo uso um JTextArea se eu consigo pegar o texto separado por linhas como se fosse uma lista ??? pois cada linha será um registro do meu banco de dados então gostaria de saber se existe alguma propriedade como no List mas q eu pegue linha por linha do JTextArea???

olha Josie…

acredito q na classe JTextArea nao tenha tal metodo q recupere linha por linha…

vc pode criar seu proprio metodo p/ fazer isso…
por ex, eh meio braço mas, vc pode ler letra a letra ate encontrar a quebra de linha (codigo 10 em ASCII)…

acho q alguem vai ter outra ideia melhor e colocar aqui…(tomara…hehe)

ate mais.

Existe um jeito bem OO de fazer isso… mas é computacionalmente caro…

vc pode pegar o conteúdo do TextArea, colocar um StringReader em volta, e um BufferedReader em volta do StringReader, assim vc vai ter acesso a um método readLine.

Existe uma subclasse do BufferedReader que chama-se LineNumberReader, que além de ler as linhas sabe contar em que linha vc está.

  String text = textArea.getText();
  StringReader sr = new StringReader(text);
  LineNumberReader reader = new LineNumberReader(sr);
  while (reader.ready()) {
    String line = reader.readLine();
    ...
  }

sugiro que vc leia o javadoc dos dois: java.io.StringReader e java.io.LineNumberReader.

[]s

Acho também que você poderia transformar os dados da JTextArea em um token, usando StringTokenizer, separando as String’s a cada nova linha inserida.
Seria algo do tipo:

//Aqui você define a string que será tokenizada!
String str = nw String(JTextArea.getText());

//Define um token que separará sua string a cada nova linha
StringTokenizer token = new StringTokenizer(suaString, "
");

//aqui, eu crio um grid para mostrar os dados “tokenizados”
JTable minhaTabela = new JTable();
minhaTabela.setModel(seuModeloDeTabela);

//Aqui eu seto os dados na JTable, para serem mostrados
while (token.hasMoreTokens()){
minhaTabela.add(token.nextToken());
}

Caso seja de seu interesse, você pode delimitar os dados de cada registro por um traço e então, criar dois tokens: um para identificar o registro, através da nova linha, e outro para retirar os dados dos campos, separados pelo traço, algo como:

StringTokenizer registro = new StringTokenizer(minhaStringCompleta, "
");
StringTokenizer campo = new StringTokenizer(registro, “-”);

Espero também ter ajudado, PORÉM, como disse nosso amigo ali em cima, tudo tem um custo… não sei se essa seria sua melhor solução, mas… .tá aí!