Foros del Web » Programación para mayores de 30 ;) » Programación General »

Java- problema con sleep

Estas en el tema de Java- problema con sleep en el foro de Programación General en Foros del Web. Hola, estoy haciendo un pequeño interprete de un lenguaje con 3 ó 4 instrucciones. La interfaz principalmente de dos TextArea, en la primera (Texto)esta el ...
  #1 (permalink)  
Antiguo 06/04/2007, 08:25
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Exclamación Java- problema con sleep

Hola, estoy haciendo un pequeño interprete de un lenguaje con 3 ó 4 instrucciones. La interfaz principalmente de dos TextArea, en la primera (Texto)esta el codigo a interpretar y en la segunda (Errores)voy sacando mensajitos.

Una de las funciones que implementa el programa es "ejecutar paso a paso", como ando bastante verde en el asunto lo mejor que he encontrado es hacer un sleep en cada vuelta del programa mientras voy monitorizando en el TextArea de los mensajes el estado de las variables y seleccionando en el codigo la instruccion que se está ejecutando...

Mi problema es el siguiente, en los textArea no se selecciona ni se escribe nada hasta que el programa no termina del todo, entonces aparece la informacion de cada iteracion... es muy extraño porque si en vez de escribir en el textArea escribo en consola si que se escribe una linea cada segundo. ¿Alguna idea?

Este es el procedimiento al que se llama en cada iteracion si la ejecucion es paso a paso:

private void pasoApaso() throws InterruptedException {
Point pto=linea(instruccion);
ed.Texto.select(pto.x, pto.y); //Para hacer un highlight en la linea
//q estoy ejecutando;
monitorizar();
sleep(1000);
ed.Texto.select(0, 0);

}

private void monitorizar(){ // Este procedimiento es el que escribe en el textArea el estado de las variables
String s="";
for (int j=0;j<variables.length;j++){
s=s+"x"+(j+1)+"="+variables[j]+", ";
}
s=s.substring(0,s.length()-2);//quitar la coma final
ed.Errores.insert(("\n"+s),(ed.Errores.getText()). length());
System.out.println(s);//<<---------Esto SI que sale cada segundo :S:S:S
}
  #2 (permalink)  
Antiguo 06/04/2007, 10:35
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: Java- problema con sleep

Hola:

En java con ventanas hay un hilo que se encarga del pintado de las ventanas. Ese hilo es el mismo con el que se despachan los eventos de ratón, teclado, pulsación de botones, etc.
Si al recibir uno de estos eventos duermes el hilo con sleep(), se quedarán todas las ventanas sin repintarse ni actualizarse hasta que termines con tu código de sleep() y lo que vaya detrás. Quizás sea eso lo que te está pasando.
Aquí puedes ver cómo evitar bloquear ese hilo de repintado.
Se bueno.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:42.