Interface em programa de CHAT(Thread)

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

Ele não está encontrando a variável ‘a’, que acho que seria seu TextArea…

Duas alternativas: Observer Pattern (best) ou criar um método público na classe do seu Form para acessar seu TextArea…

Observer Pattern (best)…o que seria?(nunca ouvi falar)

Wiki wiki wiki: http://en.wikipedia.org/wiki/Observer_pattern

É um padrão de desenvolvimento (Design Patterns).

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.

gostei…mas nao entendi muito bem o exemplo…poderia me ajudar a implementá-lo na minha classe?

:?

sorry bro, eu posso te ajudar com dúvidas, mas não vou poder fazer…

O esquema é ‘simples’… Você só precisa acessar o textarea do seu formulário na sua classe de Thread…

entao nao tenho como simplesmente realizar o setText deste textarea atraves da classe da thread?

Mas é o que eu quis dizer! :smiley:

para fazer isso você tem várias opções: criar um método publico na classe form, usar observer, usar singleton, etc…

rpaz…ja entendi o que tenho que fazer…mas simplesmente nao sei nem por onde começar…

frenkba, aqui no GUJ tem um tutorial sobre Observer.Dá uma olhada lá!!!