Ola, estou fazendo um programa de CHAT(Cliente X Servidor), onde os dois enviam e recebem mensagens,
nas duas classes uso uma Thread que é responsável por ler as mensagens que chegam, porem as Threads
estão em classes separadas, na classe principal tenho um textarea para receber essas mensagens que chegam,
portanto, preciso que a classe da Thread realize o “setText()” neste textarea da classe principal…porem…
nao estou conseg uindo…segue o codigo:
//trecho do main onde chamo a Thread, ta2 é o textarea responsavel por receber as mensagens
serverSocket= new ServerSocket(4444);
socket = serverSocket.accept();
Leia ler = new Leia(socket.getInputStream(),ta2);
new Thread(ler).start();
//classe thread
class Leia extends JFrame implements Runnable
{
private Scanner msg1;
public Leia(InputStream seq1,TextArea a)
{
this.msg1 = new Scanner(seq1);
}
public void run()
{
while(msg1.hasNextLine())
{
a.setText("Cliente disse :\n"+msg1.nextLine()+"\n");
}
}
}
o erro é este:
D:\Documents and Settings\Administrador\Meus documentos\CHAT\Servidor.java:25: cannot find symbol
symbol : variable a
location: class Leia
a.setText(“Cliente disse :\n”+msg1.nextLine()+"\n");
^
1 error
Basicamente consiste em monitorar o estado de uma classe (no seu caso a classe que lê o socket) e notificar alguma mudança para outras classes (no seu caso o seu formulário).
É um recurso muito bacana e descolado. Aliás que o mundo dos Design Patterns é bacana e descolado.