To com um problema muito estranho.
Estou fazendo um programa tipo msn. Daí abro um cliente (tela) e quando vai exibir a lista de contatos a imagem da tela simplesmente não é exibida. Fica aparecendo o eclipse no fundo. Mas não da erro.
Isso ocorre pq logo depois q eu mando exibir a tela eu chamo um método pra ficar escutando mensagens numa determinada porta (via socket). Se eu não chamar esse método, a tela é exibida normalmente.
Você esta abrindo uma nova Thread para ler o socket?
L
luisborsari
Não…
L
luisborsari
Mas o servidor abre uma nova thread para cada cliente.
L
luisborsari
Será que essa é a solução? Vou tentar!
Valeu!
L
lordcarlos
Certo, mas cada cliente desenha a tela e abre um socket certo? Não sou bom com swing, mas acho que se você ler o socket na mesma Thread que o seu frame, você vai travar ele. Tenta abrir uma Thread nova para ler o socket.
L
luisborsari
Certo!
Mas como faço pra thread não bloquear o classe que abre o frame?
Pq se faço um método pra escutar, ele tem que fazer in.readObject() (in: ObjectInputStream) e assim bloqueia a thread. E aí, como tive que criar um método na thread pra ler o sokect diferente do run (pq run é void), bloqueia a classe q chamou o frame tbm.
Entendeu?
Não sei trabalhar bem com threads…
L
luisborsari
Tentei de outro jeito, utilizando só o método run(), mas ele próprio bloqueia a outra classe.
Não sei oq fazer.
L
luisborsari
Nuhh, acho q deu certo!
Tava chamando run() ao invés de stat(). Desculpe a burrice!
Deve ser pq to há horas mexendo com isso! Não to pensando direito!