Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/11/2008, 17:15
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Mensaje Respuesta: ayuda con JTextArea

Hola,

Creo que posiblemente, lo puedas realizar de la siguiente forma, yo aún tengo muchas dudas de tu implementación, pero posiblemente te sea de alguna ayuda,

El Socket recibe datos en un input stream, yo personalmente prefiero un buffered stream y que tenga el método readLine(), eso me permite bloquear el Socket hasta que reciba una línea completa de texto, (de esa forma no se necesita estar haciendo pull's al buffer, y como lo vas a desplegar en un JTextArea me imagino que estas recibiendo datos de texto y no binarios).

Pero esa llamada a readLine() bloquea el thread donde fue llamado el método readLine() y por lo tanto el programa no puede hacer otra cosa mientras está esperando.

En tu caso necesitas que el Socket sea creado en otro thread, o por lo menos en un SwingWorker, y el readLine() debe estar dentro de un ciclo while mientras lo necesites, cada vez que el readLine() reciba una línea de texto, se la agregas al JTextArea con el método append(), posiblemente necesites una llamada a repaint().

JTextArea funciona en base a un Document, podrías crear un Document personalizado que lea directamente del Socket; pero, creo que es complicar más las cosas, si no es una aplicación que maneja más de 2 o 3 tipos diferentes de Document,

Espero haber sido de alguna ayuda,
Saludos.

Última edición por HackmanC; 17/11/2008 a las 17:21 Razón: repaint