Interface em programa de CHAT(Thread)

9 respostas
F

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

9 Respostas

F

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…

F

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

F

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.

F

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

F

:?

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…

F

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

F

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…

F

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

Ironlynx

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

Criado 26 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 9
Participantes 3