Java - Problema con hilos

 
Vista:

Problema con hilos

Publicado por Lucas1024 (43 intervenciones) el 29/12/2006 05:52:52
He hecho un programa que envía correos y tengo el siguiente problema:

En un principio, al enviar el correo la ventana se congelaba. Lo solucioné creando un hilo para ese proceso, con lo que logré que la ventana no se congelara y se pudiera seguir llenando datos en los diferentes campos que tengo agregados. Sin embargo, le quise agregar una característica adicional que consistía en mostrar en un JLabel un gif con una imagen que de la sensación de que el programa está enviando el mail, pero resulta que este gif sólo se muestra cuando se termina de enviar el correo. Traté de solucionarlo creando otro hilo para mostrar ese gif en el JLabel, pero igual, solo se agrega cuando se termina de enviar el correo.

El código que estoy usando es el siguiente:

//deshabilito el botón que sirve para enviar el correo, para no enviar un correo mientras se está //enviando otro
this.btnEnviarCorreo.setEnabled(false);
HEnviarCorreo hEnviarCorreo = new HEnviarCorreo(); //creo el hilo para enviar el correo
hEnviarCorreo.start(); //inicio el hilo

this.lblEstado.setIcon(new ImageIcon(getClass().getResource("resources/images/Enviando.gif"))); //pongo el gif
this.lblEstado.setText ("Enviando");

//Creo el siguiente bucle para que no se cambie el contenido del JLabel lblEstado mientras se //envía el mail, es decir, mientras el hilo esté vivo.
while(hEnviarCorreo.isAlive ()){
}

//Al terminar de enviar el mail, quiero que todo vuelva a la normalidad, sin gif ni nada.
this.lblEstado.setIcon(null);
this.lblEstado.setText("Finalizado");
this.btnEnviarCorreo.setEnabled(true);

lblEstado es el JLabel en el cual quiero mostrar el gif con el dibujo alusivo al envío de correo. Como dije, sólo se muestra al finalizar el envío y durante el envío que es lo que quiero. Lo sé, porque he deshabilitado la penúltima línea de código para que la imagen se mantenga ahí.

El problema no está en el código dentro del hilo HEnviarCorreo, porque sí envía el correo y todo funciona bien, excepto el detalle que menciono. Además, no puede ser, porque al crear un hilo para este proceso eliminé el problema del congelamiento de la ventana.

Espero haber sido claro, si alguien cree que puede ayudarme y necesita más datos, no dude en solicitármelos.

A todos, muchas gracias por el tiempo invertido en la lectura de este problema.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder