PDA

Ver la versión completa : Duda Thread Java



eduk15
24-04-2011, 19:07
Sres d HackHispano, en una pregunta anterior me recomendaron usar el metodo sleep de la clase Thread d Java. Quiero hacer una prueba primero, haciendo que un label sea contador, estoy usando este codigo:


int cont=0;
while(true)
{
jLabel1.setText(String.valueOf(cont++));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) { Logger.getLogger(principal.class.getName()).log(Le vel.SEVERE,null, ex);
}

}


Creo que es por el while que se cuelgan todos los componentes swing, me gustaria saber si hay alguna forma de hacerlo, para que cambie el valor del label y aun asi pueda seguir usando los botones, combobox y demas componentes swing.

hystd
24-04-2011, 23:15
Buenas ;). Antes de nada agradecerte que crearas un nuevo hilo al respecto. Pues lo que preguntaste en el otro hilo y en éste son temas distintos.

Bueno, pues para este problema, lo puedes solucionar de varias maneras, yo te propongo una solución que se basa en crear un segundo hilo, el cual se encarga de actualizar el valor del jLabel:



Thread t = new Thread(new Runnable(){
public void run(){
int cont=0;
while (true){
jLabel1.setText(String.valueOf(cont++));
try{
Thread.sleep(1000);
}catch (InterruptedException ex) { Logger.getLogger(principal.class.getName()).log(Le vel.SEVERE,null, ex);
}
}
});


Y ahora sólo tendrás que llamar a t.start() dentro de tu clase.


t.start();

Se recomienda además, llamar al método repaint() de tu JLabel para repintar el componente gráficamente en tu ventana.

Un saludo.