Esto de los hilos no los termino de entender y expondré mi dile, espero me puedan ayudar.
Usando netbeans 7:
objetos: txtTextoGrande, btnEnviar,lblProgreso
quiero escribir un mensaje grande, y dar click en enviar, y que el texto se envie en partes de 20 caracteres.
Suponiendo que introduzco un texto de 75 caracteres, entonces tendría que enviar 4 mensajes.
Kiero que se muestre el progreso del envio de los mensajes, algo así como enviando mensaje1, enviando mensaje 2, etc.
el problema es que doy click en enviar y de un solo me aparece enviando mensaje 4.
no logro ver cuando dice enviando mensaje 1, ni enviando mensaje 2.
lo que tengo es algo similar a lo siguiente:
btnEnviar(){
btnEnviar.setEnabled(false);
enviar hilo = new enviar(txtTextoGrande.getText());
hilo.start();//he usado run tambien y nada =(
btnEnviar.setEnabled(true);
}
private class enviar extends Thread {
String mensaje;
public enviar(String dato){
mensaje = dato;
}
public void run(){
while(x < y){
// donde x < y es el bucle en el cual no tengo problema.
System.out.println("esperando 3 segundos");
progreso(n) ;// donde n es Número de mensaje que se esta enviando
sleep(3000);
// proceso
// de
// envio del Mensaje
}
}
}
private void progreso(int n){
lblProgreso.setText("Enviando mensaje: "+n);
}
El sleep(3000) parece funcionar bien porque en consola se ve que cada tres segundo muestra el mensaje "esperando 3 segundos", pero en el lblProgreso no se muestra nada hasta concluido todos los envios y en un solo aparece "enviando mensaje: 4".
El desactivar y activar el boton enviar lo hace en cuestion de un abrir y cerrar de ojos, tal y como quiero que funcione, ya que quiero que los mensajes se envien en segundo plano e inmediatamente poder seguir escribiendo como para mandar otro mensaje, mientras se estan enviando los demas.
Espero me puedan explicar un poco mas este rollo de los hilos y que estoy haciendo mal en este caso.