Ola, estou desenvolvendo um chat mas estou com um problema grande e pouco tempo, eu conecto no servidor com 2 clientes, as mensagens que digito é imprimida no textbox do cliente q esta mandando a mensagem, mas chega no outro cliente no painel em vez do chatbox.
Alguem tem alguma dica ???
ps:. c precisar eu coloco o codigo
Ajuda (Chat)
16 Respostas
Posta o código da parte que você está recebendo as mensagens…
T+
// execução da thread
public void run() {
System.out.println(“escutando…”);
jTextAreaGeral = getJTextAreaGeral();
try {
BufferedReader entrada = new BufferedReader
(new InputStreamReader(conexao.getInputStream()));
while (true) {
// pega o que o servidor enviou
_linha = entrada.readLine();
jTextAreaGeral.setText(_linha);
System.out.println("variavel linha = " + _linha );
System.out.println("variavel conexao = " + conexao);
System.out.println("done = " + done);
// verifica se é uma linha válida. Pode ser que a conexão
// foi interrompida. Neste caso, a linha é null. Se isso
// ocorrer, termina-se a execução saindo com break
if (_linha == null) {
System.out.println("deu pau");
//jTextAreaGeral.append("Conexão encerrada!");
break;
}
// caso a linha não seja nula, deve-se mostrar
System.out.println(_linha);
System.out.println("\n");
//jTextAreaGeral.setText(_linha);
//jTextAreaGeral.setText("\n");
}
}
catch (IOException e) {
// caso ocorra alguma exceção de E/S, mostre qual foi.
jTextAreaGeral.setText("IOException: " + e);
}
// sinaliza para o main que a conexão encerrou.
done = true;
}
Não sei se entendi muito bem, mas quando você recebe uma mensagem no cliente, você está adicionando essa mensagem no jTextAreaGeral:
jTextAreaGeral.setText(_linha);
É nesse mesmo que tem que aparecer???
SIm, ja tentamos com set e com append mas nao esta imprimindo la…
Tente fazer assim:
jTextAreaGeral.setText(jTextAreaGeral.getText() + _linha);
T+
Diego, não funciono :´(
Ta muito tenso… to a quase 2 semanas fazendo o chat, mas soh tenho até segunda, e nao vendo progressos nessa parte… ja tentei de quase tudo…
Tem + alguma ideia ???
Abraços e vlw !
Você tem uma classe Servidor e uma classe Cliente??? Ou tem + classes?? Se quiser me mandar posso dar uma olhada pra vc…
T+
vlww
Rapaz, dei uma olhada aqui, e sempre que o cliente recebe uma mensagem vc faz:
jTextAreaGeral = getJTextAreaGeral();
E essa linha sempre está retornando uma nova JTextArea, só não sei porque…
T+
Ptz… deve ser…
vou tentar fazer alguma coisa aki =x
vlw a ajuda…
se tiver alguma ideia de como arrumar da um toke xD
abraços.
Rapaz, dei uma olhada aqui, e sempre que o cliente recebe uma mensagem vc faz:jTextAreaGeral = getJTextAreaGeral();E essa linha sempre está retornando uma nova JTextArea, só não sei porque…
T+
deve ser porque o getJTextAreaGeral está assim:
public JTextArea getJTextAreaGeral(){
return new JTextArea();
}
deve ser assim:
public JTextArea getJTextAreaGeral(){
if (jTextAreaGeral == null){
jTextAreaGeral = new JTextArea();
}
return jTextAreaGeral;
}
:thumbup:
Brigadao por essa dica… mais ainda nao eh issu =/
ta muito estranho… sera q nao ta estânciado certo ?
Rapaz, dei uma olhada aqui, e sempre que o cliente recebe uma mensagem vc faz:jTextAreaGeral = getJTextAreaGeral();E essa linha sempre está retornando uma nova JTextArea, só não sei porque…
T+
deve ser porque o getJTextAreaGeral está assim:
public JTextArea getJTextAreaGeral(){ return new JTextArea(); }deve ser assim:
public JTextArea getJTextAreaGeral(){ if (jTextAreaGeral == null){ jTextAreaGeral = new JTextArea(); } return jTextAreaGeral; }:thumbup:
Pior que não.
Tá assim:
private JTextArea getJTextAreaGeral() {
if (jTextAreaGeral == null) {
System.out.println("area null");
jTextAreaGeral = new JTextArea();
jTextAreaGeral.setBounds(new Rectangle(11, 3, 466, 170));
jTextAreaGeral.setEditable(false);
}
return jTextAreaGeral;
}
AEEEEEE CONSEGUI FAZER FUNCIONAR, VLW GALERA…
Ahh eu tenho +1 pergunta ^^
Tipo o chat ta em uma tela pequena e quando dou maximizar ele continua pequeno…
como faço pra quando eu maximizar ele, ele aumentar tmb ??? pq c nao ele fica soh pequeno ^^
Abraços !
Pelo que vi você usou o método setBounds pra configurar a posição dos componentes. Use gerenciadores de layout que vai ficar do jeito que você quer, quando aumentar ou diminuir a tela os componentes se ajustam automaticamente…
T+
Ahh intão era issu mesmo… ja tava mesmo desconfiando do setBounds ^^
Vlw… agora to terminando xD
soh falta atualizar a lista de usuarios qndo entrarem e sairem e vai ta pronto…
vlw toda a ajuda ae