Problema swing-thread
Hola a todos...
Tengo un problemilla.. Desde un gui tengo que lanzar un aviso, el problema q el gui sale gris. He creado un Thread para q lo realize en otro hilo.
Thread:
public class ValidaThread extends Thread {
JFrame frame;
long time;
public ValidaThread() {
}
public void run(){
lanzaValida();
}
public void lanzaValida(){
DlgProcesando process = new DlgProcesando(frame,false,time);
Pantallas.CentrarPantalla(process);
}
Y desde el gui lanzo:
ValidaThread valida = new ValidaThread();
valida.start();
System.out.println(this.getName() + " Ejecuto el thread");
}
}
Necesito algo más. Gracias de antemano.
Tengo un problemilla.. Desde un gui tengo que lanzar un aviso, el problema q el gui sale gris. He creado un Thread para q lo realize en otro hilo.
Thread:
public class ValidaThread extends Thread {
JFrame frame;
long time;
public ValidaThread() {
}
public void run(){
lanzaValida();
}
public void lanzaValida(){
DlgProcesando process = new DlgProcesando(frame,false,time);
Pantallas.CentrarPantalla(process);
}
Y desde el gui lanzo:
ValidaThread valida = new ValidaThread();
valida.start();
System.out.println(this.getName() + " Ejecuto el thread");
}
}
Necesito algo más. Gracias de antemano.
Hola.
El problema es que tienes ocupado el hilo de awt, que es el que se encarga de pintar las cosas. Efectivamente, tienes que crear otro hilo, pero no para la ventana, sino para lo que estés haciendo.
Si el aviso es resultado, por ejemplo, de la pulsacion de un boton y el codigo está en un actionPerformed(), lo que tienes que hacer es el return del actionPerformed() lo antes posible. Puedes poner ahi el dialogo (sin thread) y lanzar un Thread para que haga el resto del código. El dialogo, por supuesto, no puede ser un JOptionPane que te deje bloqueado.
Se bueno.
El problema es que tienes ocupado el hilo de awt, que es el que se encarga de pintar las cosas. Efectivamente, tienes que crear otro hilo, pero no para la ventana, sino para lo que estés haciendo.
Si el aviso es resultado, por ejemplo, de la pulsacion de un boton y el codigo está en un actionPerformed(), lo que tienes que hacer es el return del actionPerformed() lo antes posible. Puedes poner ahi el dialogo (sin thread) y lanzar un Thread para que haga el resto del código. El dialogo, por supuesto, no puede ser un JOptionPane que te deje bloqueado.
Se bueno.