primeiro coloque o texto que você leu do arquivo em uma JTextArea ou um JLabel e depois adicione a jtextarea ou o jlabel ao painel.
vc esta tentando adicionar texto diretamente ao painel, axu q isso não eh possivel
G
giovaniufop
o método add() de JPanel é herdado da classe java.awt.Container, e tem algumas versões sobrecarregadas, e todas elas incluem um parâmetro do tipo Component.
Quando vc obtiver um erro desse tipo olhe aassinatura do método pra ver o que ele está pedindo. E dê uma olhada na API java tb se precisar de mais detalhes
privateJPanelpanelPrincipal;privateStringtexto;privateJLabellabelTexto;...panelPrincipal=newJPanel();// cria o JPaneltexto="Esse texto vai ser adicionado ao JPanel";// inicia o String textolabelTexto=newJLabel();// cria o JLAbellabelTexto.setText(texto);// adiciona o textopanelPrincipal.add(labelTexto);// adiciona o JLabel ao painel
Um exemplo com JTextArea:
privateJPanelpanelPrincipal;privateStringtexto;privateJTextAreatextArea;...panelPrincipal=newJPanel();// cria o JPaneltexto="Esse texto vai ser adicionado ao JPanel";// inicia o String textotextArea=newJTextArea();// cria o JTextAreatextArea.setText(texto);// adiciona o textopanelPrincipal.add(labelTexto);// adiciona a JTextArea ao painel
G
guilherme.cq
Ops… vou tenta
G
guilherme.cq
Cara,
Não consigo fazer o programa retornar todo o arquivo lido, apenas a ultima linha...
kra dá uma olhada dentro do seu laço while, vc naum esta concatenando o que esta lendo do arquivo de texto:
seu metodo mostraArquivo()
publicStringmostraArquivo()throwsFileNotFoundException
{
Filefile=newFile("desfaz.log");Scannersc=newScanner(file);while(sc.hasNextLine()){
texto=sc.nextLine(); // aqui esta o erro, vc esta atribuindo somente, vc deve concatenar}
returntexto;
}
Meu arquivo seria assim:
linha1 auhauhaah
linha2 haahhaahha
linha3 haahhaahha
Deste jeito o programa colocara em uma unica String, sem o comando para nova linha.
G
giovaniufop
kra nunca fiz quebra de linha no JLabel, mas acredito que a unica forma de vc fazer quebra de linha em JLabel é usando HTML, isso mesmo.
Ola o novo metodo, colocamos o que lemos do arquivo entre as tags e utilizamos pra quebrar a linha
então ao final da execução a variavel texto ficará com seguinte formato
texto da linha 1
texto da linha 2
assim por diante
espero que tenha entendido
G
giovaniufop
Agora se vc estivesse adicionando seu texto a uma JTextArea ao invés de um JLabel vc poderia usar o caracter \n de quebra de linha.
Exemplo com JTextArea:
publicStringmostraArquivo()throwsFileNotFoundException{Filefile=newFile("desfaz.txt");Scannersc=newScanner(file);while(sc.hasNextLine()){texto+=sc.nextLine()+"\n";//só concatenar o "\n" já teria o efeito desejado mas }returntexto;}publicvoidcriaJanela()throwsFileNotFoundException{JPanelpanel=newJPanel();JTextAreaarea=newJTextArea();area.setText(mostraArquivo());panel.add(area);// adicionando a textarea ao painel ao inves do labelgetContentPane().add(panel,BorderLayout.CENTER);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);pack();setVisible(true);show();}
G
guilherme.cq
giovaniufop,
Muito obrigado pela ajuda!
Com esse programinha pretendo implementar um outro para análise de logs de um sistema.
Aproveitando para um pós-implementação… para edição deste arquivo, como poderia fazer?
Tipo criei um programinha básico que lê um arquivo e mostra todo seu conteúdo, e como editá-lo, como se fosse um notepad??
Abraços
G
giovaniufop
ah kra ae vc maxuca meu braço de tanto digitar aki ahfhdaufa
da uma pesquisada no fórum, isso que vc quer fazereh mto facil. deve ter milhares de fontes que ensinam ou te ajudam afazer isso ae.