Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/03/2007, 12:48
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 5 meses
Puntos: 51
Re: Implementar cliente de chat en Java

Los eventos de teclado etc. los gestionan igual las librerías de Swing, con distintas hebras/Threads etc.

Una opcion para evitar el tema bloqueante es meterse a saco con el nuevo API Java NIO, que es un API de E/S que permite conexiones no bloqueantes, aunque la gestión de sockets es bastante más compleja.

Por otro lado, la comunicación con el applet de una hebra que quede bloqueda a la espera de eventos no debería ser ningún problema. La estrategia habitual es pasarle una referencia del applet a la hebra cuando se crea, en el constructor, y usar esta referencia para notificar al applet en caso de evento, a través de algún metodo sincronizado normalmente.

Para hacer una aplicacion/applet Swing más alla de una demo, hay que manejar con soltura el tema de las hebras para evitar dejar bloqueada la interfaz excepto lo imprescindible, así que no tengas miedo en meterte con ello por que es algo que se debería conocer.

Un saludo.

PD: Un ejemplo de aplicacion, JWS en vez de applet pero pal caso..., que usa hebras, aunque no se bloqueen, para hacer cosas y luego notificar a la aplicacion padre:
https://mw4serverseeker.dev.java.net/
Puedes ver en esta clase:
https://mw4serverseeker.dev.java.net....3&view=markup
como se le pasa una referencia al panel padre, parentPanel, para poder actualizar datos cuando los consigue.

PPD: Una opcion para no tener que gestionar tu las colas de clientes esperando notificación etc sería usar JMS para las comunicaciones, y así ahorrarte el meterte a saco con sockets .