Autor Tema: Ayuda con Hilos java  (Leído 1314 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 7
  • -Receive: 6
  • Mensajes: 1543
  • -] java Adict [-
Ayuda con Hilos java
« : septiembre 20, 2011, 05:19:11 pm »
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:

Código: [Seleccionar]
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.
VampireTeam