JTextArea

8 respostas
brunosardao

Pessoal, bom dia…

eu tenho o código abaixo criado para leitura de um arquivo TXT…

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

jFileChooser1.showOpenDialog(null);
         File f = jFileChooser1.getSelectedFile();
         jTextField1.setText(f.getName());
         lerArquivo(f);

public void lerArquivo(File caminho){

try{
         Reader r = new FileReader(caminho);
      
         int c;
         
            while((c = r.read()) != - 1 ){ // -1 fim da leitura do arquivo.
             
                  System.out.print((char) c + " ");
        
            }
            r.close();         
         }
        
     catch(Exception e){
               System.out.println(" Erro ao ler o arquivo ");
     }
   }

Eu gostaria que o conteúdo da leitura, saisse na JTEXTAREA1 em vez de apenas sair em um SYSTEM.OUT.PRINTLN. Estou fazendo ele através de um aplicativo de Swing.

Alguém poderia me explicar o que pode ser feito ???

Muito Obrigado.

8 Respostas

leandrocliqueaqui

Crie um JtextArea e passe a String pra ele, assim:

JTextArea area = new JTextArea();
area.setText("Coloque seu texto aqui");
brunosardao

Leandro, muito obrigado por sua pronta resposta…

vou tentar aqui…

francislon

Coloque todo o conteudo do arquivo numa String.
Depois coloque esta String no JTextArea através do método setText.

brunosardao

francislon

Eu entendi o que você quis dizer, porém eu gostaria que fosse assim:

O sistema abre um arquivo TXT com informações e depois de lido o arquivo, ele apresenta o que encontrou no JTextArea…

será que é possível assim? ou é preciso utilizar outro componente ?

Obrigado.

leandrocliqueaqui

Então brunosardao, os passos pra isso é da forma como vc ja fez com o console, buscando o arquivo, lendo seu conteúdo, guardando este conteúdo numa String e depois é só passar esta String para o método responsável da JTextArea.
Falou.

brunosardao

Valeu Leandro,

vou testar aqui sua dica…

obrigado.

W

Cara nao tem misterio, fiz um exemplo pra vc.

Na verdade vc estava quase la, quando vc fazer o loop no conteudo do arquivo pra imprimir no terminal, vc usa o metodo append para adicionar cada char do seu arquivo no JTextArea. Veja o exemplo :

import javax.swing.*;
import java.awt.*;
import java.io.*;

@SuppressWarnings("serial")
public class Main extends JFrame {

	public Main(String filename) { 
			
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JTextArea txtarea = new JTextArea();
		
		try { 
			BufferedReader br = new BufferedReader(
					new FileReader(new File(filename)));
			
			int c ;
			
			while( (c = br.read()) != -1) {			
				txtarea.append(String.valueOf((char)c));				
			}
			
			br.close();
						
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		add(txtarea);
		
		
		setSize(new Dimension(300,300));
		setVisible(true);
		
	}	
	
	public static void main(String[] args) {		
		new Main(args[0]);				
	}
	
	
}

Para rodar eh so fazer :

java Main arquivo.txt

PS : O setText como falaram acima, capaz que funcione, porem eu nao acho tao “elegante”. Porque se o seu arquivo for gigante, vc vai criar uma string que poderia dar a volta no mundo e depois jogar no JTextArea. :slight_smile:

So pra complementar nesse topico eh postei uma coisa interessante sobre como imprimir num JTextArea como se imprime pro terminal.

http://www.guj.com.br/posts/list/87921.java#470234

Na verdade eh uma classe chamada JTextAreaOutputStream que extende OutputStream. Ai vc pode “direcionar” a saida para esse JTextAreaOutputStream e imprimir normalmente tipo :

JTextArea text_area = new JTextArea();  
out = new PrintStream  ( new JTextAreaOutputStream( txt_area ));   
out.println("teste");

Adicionamente, no meu blog tem um exemplo de como usar essa classe, em conjunto com a classe TeeOutputStream da API apache.commons.io que direciona o output pra dois lugares “ao mesmo tempo”, no caso do exemplo que eu fiz no blog, imprime para um arquivo e para o JTextArea.

Espero ter ajudado.

//Daniel

brunosardao

Poxa Daniel, muito obrigado mesmo…exemplo melhor que esse impossível…

ajudou muito mesmo, e obrigado a todos também pela ajuda…

Se eu puder abusar só mais um pouco da sua ajuda e de todos, é que sou iniciante em java, muitas coisas estou aprendendo na faculdade, e tenho que fazer uma gravação de informações em um arquivo TXT, porém foi pedido para usar o ObjectInputStream.

Porém, ele explicou que é necessário implementar a interface SERIALIZABLE e pegar o serialVersionUID da classe usando o aplicativo SERIALVER. Eu fiz isso mas o aplicativo só informa que não acha a classe, como posso fazer isso ?

e usando este esquema de serialização, eu preciso fazer com que a tela permita que o usuário serialize e, a partir do botão SALVAR, grave em um arquivo texto um objeto ContaBancaria. O nome do arquivo deve ser aquele digitado na caixa ?Nome da Conta?. e o botão CARREGAR permite ao usuário localizar um arquivo de conta e carregá-lo em tela. Para isto utilize um JFileChooser.

Eu já tentei de diversas maneiras fazer com a explicação do professor, porém nada feito, será que é possível você ou vocês me ajudarem nisso também?

Mais um vez muito obrigado.

Bruno.

Criado 29 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 8
Participantes 4