elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Actualizar componentes? Repintar componenteS??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Actualizar componentes? Repintar componenteS??  (Leído 1,845 veces)
ChicoTolerante

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Actualizar componentes? Repintar componenteS??
« en: 27 Febrero 2013, 02:10 am »

Hola!

Estoy INTENTANDO hacer un chat. El problema lo tengo para actualizar los mensajes enviados y el texto que debe aparecer en el JTextArea. Entonces, tengo lo siguiente, esencialmente:

Código
  1. Fichero 1: clase InterfazDelChat
  2. public class InterfazDelChat extends JFrame implement ActionListener
  3. {
  4. public static JTextArea areaChat = new JTextArea("Titulo del JTextArea del chat\n\n", 50, 50);
  5. public static JButton conec = new JButton("Conectar");
  6. public InterfazDelChat()
  7. {
  8. super("Titulillo");
  9. getContentPane().add(areaChat);
  10. getContentPane().add(conec);
  11. areaChat.addActionListener(this);
  12. }
  13. @Override
  14. public void actionPerformed(ActionEvent ev)
  15. {
  16. new ServidorDelChat;
  17. }
  18. public static void main(String[]args)
  19. {
  20. new InterfazDelChat();
  21. }
  22. }
  23.  

Fichero 2: clase ServidorDelChat
Código
  1. public static class ServidorDelChat
  2. {
  3. public ServidorDelChat()
  4. {
  5. //Codigo del socket hasta el punto de DataInputStream tenerlo en el String mensajeRecibido)
  6. while (desconectado != true)
  7. {
  8. //Lo que yo creia que tenia que poner:
  9. InterfazDelChat.areaChat.append("\nCliente dice:\n" + mensajeRecibido + "\n");
  10. }
  11. /*Lo que ocurre, cuando pongo esto, es que el texto no llega a la interfaz, al JTextArea
  12.  del programa, hasta que no ha completado el bucle
  13. (cuando pongo un numero de opciones finito,
  14. no como el que esta puesto aqui,
  15. si pongo 3, envia 3 mensajes diferentes...),
  16. porque si quiero que esto se pueda repetir, ¿tendre que meterlo en un bucle, no?
  17. El caso es que me lo imprime, y me lo imprime bien, pero tarde.
  18. No me lo imprime en la pantalla, en el caso de poner 3 como fin del bucle,
  19. hasta que no ha superado el bucle, no carga el texto
  20. (no carga el texto de linea en linea, carga solo al final del bucle todos los mensajes acumulados...*/
  21. }
  22. }
  23.  

He imaginado que la clase InterfazDelChat no se vuelve a cargar hasta que acaba con el bucle, que termina el objeto, y así vuelve a cargar los demás objetos. Entonces... mi pregunta sería:
   - ¿Cómo puedo cargar el JTextArea de la clase InterfazDelChat desde la otra clase ServidorSocket? ¿O cómo puedo cargar de nuevo un objeto, o actualizarlo, estando este en una, y queriendo cargarlo desde otra?

He estado buscando y probando diversas cosas, pero nada surgio efecto... Gracias por todo!!


En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Actualizar componentes? Repintar componenteS??
« Respuesta #1 en: 27 Febrero 2013, 08:31 am »

Hola:

Tiene pinta de que es problema de que estás manteniendo ocupado el hilo de repintado de ventanas (Event Dispatch Thread  EDT). Cuando pulsas un botón, java ejecuta el actionListener en ese hilo que además es el hilo encargado de pintar las ventanas y su contenido. Si mantienes ese hilo ocupado (un while infinito, leyendo de un socket, etc) NADA se repintará en las ventanas hasta que se termine tu código. Entonces se pintará todo de golpe (lo que dices que lo pinta tres veces, pero tarde).

La solución suele ser en el actionPerformed(), lanzar un hilo que haga todo lo que tengas que hacer, liberando así rápidamente el EDT. Tienes más detalles aquí http://chuwiki.chuidiang.org/index.php?title=El_EDT_%28Event_Dispatch_Thread%29_de_Java

Se bueno.


En línea

ChicoTolerante

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Actualizar componentes? Repintar componenteS??
« Respuesta #2 en: 27 Febrero 2013, 10:54 am »

Ohhh Chuidiang!! Gran honor para mi!! Tus tutoriales me han sacado de embrollos importantes + de una!!! Es lo que dices seguro, porque si eso es así es normal que no se me esté repintando. Definitivamente, lo acabo de probar y YEAHHHH funciona debidamente! Gracias por la explicación, ahora entiendo qué estaba pasando.

Un saludo cordial, te dejo ahí una vibra en modo "gracias"!!
http://www.youtube.com/watch?v=JkaJP1m_s4Y
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
componentes electronicos
Electrónica
cabo 0 1,719 Último mensaje 9 Marzo 2006, 23:48 pm
por cabo
Actualizar Componentes PC
Hardware
j230uy 2 2,073 Último mensaje 23 Febrero 2012, 22:23 pm
por worldrings
[Ayuda] Actualizar componentes de mi pc
Hardware
killtrillo 4 2,578 Último mensaje 1 Agosto 2012, 21:29 pm
por rassiel
montando PC por componentes. Consulta componentes
Hardware
antoniolr13 4 1,801 Último mensaje 28 Mayo 2015, 10:37 am
por Hurdano
Quiero actualizar mi pc (componentes) que deberia actualizar quiero mas fps
Hardware
Isaac_00726 1 896 Último mensaje 19 Septiembre 2018, 11:46 am
por Sub_Cero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines