Como colocar os System.out.println em um Jtextarea
8 respostas
G
Guimagal
Galera é o seguinte. Tenho um chat de mensagens ,com a classe servidor ,gerenciador de clientes e o cliente. No servidor tenho os System.out.println porém quero que em vez de sair tudo no console saia no Jtextarea .Começei a implementar aqui mas não está funcionando .
importjava.awt.Color;importjava.awt.Font;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;importjavax.swing.JOptionPane;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;publicclassServidorSocket{publicstaticvoidmain(String[]args)throwsIOException{ServerSocketservidor=null;try{JOptionPane.showMessageDialog(null,"startando o servidor");System.out.println("Startando o servidor");Stringportacliaq=null;portacliaq=JOptionPane.showInputDialog("Qual a porta para o servidor do Chat ?");servidor=newServerSocket(Integer.parseInt(portacliaq));//aqui vai fica porta !! para conectar use ip:portaSystem.out.println("servidor startado");JOptionPane.showMessageDialog(null,"Servidor DE ARQUIVO startado / Na porta "+portacliaq);JOptionPane.showMessageDialog(null,"Aguardando conexão de clientes na mesma porta do servidor !");while(true){Socketcliente=servidor.accept();////newGerenciadorDeClientes(cliente);JTextAreatextArea=newJTextArea(50,10);JTextAreajtQui=null;PrintStreamPrintStream=newPrintStream(newCustomOutputStream(jtQui));System.setOut(PrintStream);System.setErr(PrintStream);}}catch(IOExceptione){try{if(servidor!=null)servidor.close();}catch(IOExceptione1){}JOptionPane.showMessageDialog(null,"A porta está ocupada ou servidor foi fechado");System.err.println("a porta está ocupada ou servidor foi fechado");e.printStackTrace();}}}
Amigo então…a informação que eu quero exibir está na classe GerenciadorDeClientes.
Como faz para exportar de lá e exibir na classe servidor?Sendo que essa classe faz parte do mesmo src.
Classe GerenciadorDeClientes
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.io.PrintWriter;importjava.io.StringWriter;importjava.net.Socket;importjava.util.HashMap;importjava.util.Map;importjavax.swing.JOptionPane;importjavax.swing.JTextArea;publicclassGerenciadorDeClientesextendsThread{privateSocketcliente;privateStringnomeCliente;privateBufferedReaderleitor;privatePrintWriterescritor;privatestaticfinalMap<String,GerenciadorDeClientes>clientes=newHashMap<String,GerenciadorDeClientes>();publicJTextAreajtQui;publicGerenciadorDeClientes(Socketcliente){this.cliente=cliente;start();}@Overridepublicvoidrun(){try{leitor=newBufferedReader(newInputStreamReader(cliente.getInputStream()));escritor=newPrintWriter(cliente.getOutputStream(),true);efetuarLogin();Stringmsg;while(true){msg=leitor.readLine();if(msg.equalsIgnoreCase(Comandos.SAIR)){this.cliente.close();}elseif(msg.startsWith(Comandos.MENSAGEM)){StringnomeDestinario=msg.substring(Comandos.MENSAGEM.length(),msg.length());//colocar essa linha sequinte em um textareaSystem.out.println("enviando para "+nomeDestinario);GerenciadorDeClientesdestinario=clientes.get(nomeDestinario);//colocar aqui um negocio para enviar arquivo//if(destinario==null){escritor.println("O cliente informado nao existe");}else{// escritor.println("digite uma mensagem para " + destinario.getNomeCliente());destinario.getEscritor().println(this.nomeCliente+" disse: "+leitor.readLine());}// lista o nome de todos os clientes logados}elseif(msg.equals(Comandos.LISTA_USUARIOS)){atualizarListaUsuarios(this);}else{escritor.println(this.nomeCliente+", você disse: "+msg);}}}catch(IOExceptione){// coloca em umtextarea tbmSystem.err.println("o cliente fechou a conexao");clientes.remove(this.nomeCliente);}}privatesynchronizedvoidefetuarLogin()throwsIOException{while(true){escritor.println(Comandos.LOGIN);this.nomeCliente=leitor.readLine().toLowerCase().replaceAll(",","");if(this.nomeCliente.equalsIgnoreCase("null")||this.nomeCliente.isEmpty()){escritor.println(Comandos.LOGIN_NEGADO);}elseif(clientes.containsKey(this.nomeCliente)){escritor.println(Comandos.LOGIN_NEGADO);}else{escritor.println(Comandos.LOGIN_ACEITO);escritor.println("Olá "+this.nomeCliente);clientes.put(this.nomeCliente,this);for(Stringcliente:clientes.keySet()){atualizarListaUsuarios(clientes.get(cliente));}break;}}}privatevoidatualizarListaUsuarios(GerenciadorDeClientescliente){StringBufferstr=newStringBuffer();for(Stringc:clientes.keySet()){if(cliente.getNomeCliente().equals(c))continue;str.append(c);str.append(",");}if(str.length()>0)str.delete(str.length()-1,str.length());cliente.getEscritor().println(Comandos.LISTA_USUARIOS);cliente.getEscritor().println(str.toString());}publicPrintWritergetEscritor(){returnescritor;}publicStringgetNomeCliente(){returnnomeCliente;}// public BufferedReader getLeitor() {// return leitor;// }}
C
Chaybelucas
Cara, faz assim
Instancia tua classe que tem o componente TextArea dentro da Classe que tem essa mensagem aparecendo, no caso, GerenciadorDeClientes. Ex:
Classe1staticJTextAreatArea=newJTextArea();//Aqui sua outra classe GerenciadorDeClientesClasseGerenciadorDeClientesClasse1classe1=newClasse1();
Usa tua instancia pra acessar os metodos do componente e setar o texto. Creio que para isso, ele deva ser static, como coloquei…
classe1.tArea.setText(suaStringComSuaMensagem);
J
Jonas_B_a_r_r_o_s
Guimagal, está funcionando como está escrito? Você consegue ver a lista de usuarios, enviar mensagens mesmo pelo System.out.print?
G
Guimagal
Não amigo,no caso eu vejo pela classe cliente tudo isso já dentro de um frame,ou seja,dentro da telinha que eu fiz.Posso postar aqui se vc quiser ver.
Só na classe servidor que eu tenho como ver pelo console isso
System.out.println("enviando para "+nomeDestinario);
e
System.err.println(“o cliente fechou a conexao”);
Quero que isso vá para um jtextarea em vez de ficar no console.
G
Guimagal
Amigo fiz o que vc me disse e não deu certo
Vou colocar a classe como ficou.
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.io.PrintWriter;importjava.io.StringWriter;importjava.net.Socket;importjava.util.HashMap;importjava.util.Map;importjavax.swing.JOptionPane;importjavax.swing.JTextArea;publicclassGerenciadorDeClientesextendsThread{privateSocketcliente;privateStringnomeCliente;privateBufferedReaderleitor;privatePrintWriterescritor;privatestaticfinalMap<String,GerenciadorDeClientes>clientes=newHashMap<String,GerenciadorDeClientes>();publicJTextAreajtQui;publicGerenciadorDeClientes(Socketcliente){this.cliente=cliente;start();}staticJTextAreatArea=newJTextArea();GerenciadorDeClientesclasse1=newGerenciadorDeClientes(cliente);classe1.tArea.setText(suaStringComSuaMensagem);publicvoidrun(){try{leitor=newBufferedReader(newInputStreamReader(cliente.getInputStream()));escritor=newPrintWriter(cliente.getOutputStream(),true);efetuarLogin();Stringmsg;while(true){msg=leitor.readLine();if(msg.equalsIgnoreCase(Comandos.SAIR)){this.cliente.close();}elseif(msg.startsWith(Comandos.MENSAGEM)){StringnomeDestinario=msg.substring(Comandos.MENSAGEM.length(),msg.length());//colocar essa linha sequinte em um textareaSystem.out.println("enviando para "+nomeDestinario);GerenciadorDeClientesdestinario=clientes.get(nomeDestinario);//colocar aqui um negocio para enviar arquivo//if(destinario==null){escritor.println("O cliente informado nao existe");}else{// escritor.println("digite uma mensagem para " + destinario.getNomeCliente());destinario.getEscritor().println(this.nomeCliente+" disse: "+leitor.readLine());}// lista o nome de todos os clientes logados}elseif(msg.equals(Comandos.LISTA_USUARIOS)){atualizarListaUsuarios(this);}else{escritor.println(this.nomeCliente+", você disse: "+msg);}}}catch(IOExceptione){// coloca em umtextarea tbmSystem.err.println("o cliente fechou a conexao");clientes.remove(this.nomeCliente);}}privatesynchronizedvoidefetuarLogin()throwsIOException{while(true){escritor.println(Comandos.LOGIN);this.nomeCliente=leitor.readLine().toLowerCase().replaceAll(",","");if(this.nomeCliente.equalsIgnoreCase("null")||this.nomeCliente.isEmpty()){escritor.println(Comandos.LOGIN_NEGADO);}elseif(clientes.containsKey(this.nomeCliente)){escritor.println(Comandos.LOGIN_NEGADO);}else{escritor.println(Comandos.LOGIN_ACEITO);escritor.println("Olá "+this.nomeCliente);clientes.put(this.nomeCliente,this);for(Stringcliente:clientes.keySet()){atualizarListaUsuarios(clientes.get(cliente));}break;}}}privatevoidatualizarListaUsuarios(GerenciadorDeClientescliente){StringBufferstr=newStringBuffer();for(Stringc:clientes.keySet()){if(cliente.getNomeCliente().equals(c))continue;str.append(c);str.append(",");}if(str.length()>0)str.delete(str.length()-1,str.length());cliente.getEscritor().println(Comandos.LISTA_USUARIOS);cliente.getEscritor().println(str.toString());}publicPrintWritergetEscritor(){returnescritor;}publicStringgetNomeCliente(){returnnomeCliente;}// public BufferedReader getLeitor() {// return leitor;// }}
G
Guimagal
Por exemplo como faz para mim abrir esse jtexarea na classe do servidor ?
Olha o comentário que eu deixei nesse código
importjava.awt.Color;importjava.awt.Font;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;importjavax.swing.JOptionPane;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;publicclassServidorSocket{publicstaticvoidmain(String[]args)throwsIOException{ServerSocketservidor=null;try{JOptionPane.showMessageDialog(null,"startando o servidor");System.out.println("Startando o servidor");Stringportacliaq=null;portacliaq=JOptionPane.showInputDialog("Qual a porta para o servidor do Chat ?");servidor=newServerSocket(Integer.parseInt(portacliaq));//aqui vai fica porta !! para conectar use ip:portaSystem.out.println("servidor startado");JOptionPane.showMessageDialog(null,"Servidor DE MSG startado / Na porta "+portacliaq);JOptionPane.showMessageDialog(null,"Aguardando conexão de clientes na mesma porta do servidor !");while(true){Socketcliente=servidor.accept();////newGerenciadorDeClientes(cliente);// Os System println estão dentro da classe Gerenciador de clientes e são exibidos no console dessa classe.}}catch(IOExceptione){try{if(servidor!=null)servidor.close();}catch(IOExceptione1){}JOptionPane.showMessageDialog(null,"A porta está ocupada ou servidor foi fechado");System.err.println("a porta está ocupada ou servidor foi fechado");e.printStackTrace();}}}
J
Jonas_B_a_r_r_o_s1 like
Envie seu projeto para esse email: [email removido], vou tentar fazer pra voce