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.
Alguém faz idéia do que posso fazer?
Desde já, valeu!
Você esta abrindo uma nova Thread para ler o socket?
Mas o servidor abre uma nova thread para cada cliente.
Será que essa é a solução? Vou tentar!
Valeu!
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.
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…
Tentei de outro jeito, utilizando só o método run(), mas ele próprio bloqueia a outra classe.
Não sei oq fazer.
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!
Mas de qq forma, valeu! Essa é a solução!
Muito obrigado!

Veja se esses links podem te ajudar:
http://www.ashishmyles.com/tutorials/tcpchat/index.html
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html#creating_threads
no ultimo menciona que você precisa cirar uma instancia do swing worker para realizar um processamento demorado como IO.