Autor
|
Tema: Busco función que espere tiempo para hacer una cuenta-atrás (Leído 9,691 veces)
|
Wargolth
|
Hola muy buenas,
Java no es mi mejor aliado porque aún no lo controlo muy bien y añadido a esto no consigo sacar lo que quiero de la documentación.
Existe alguna función de java que espere durante un tiempo? Encontré una que se llama sleep aplicada a los "Threads". Ni idea de lo que son. En fin, quería hacer un bucle que a cada ciclo esperase 1 segundo y luego cambiase en un label el tiempo que queda -> cuenta atrás.
Gracias por vuestra, ya busqué pero hasta ahora no pude encontrar nada, Wargolth
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Thread.sleep(milisegundos); pones 1000 milisegundos para un segundo. PD: Debes capturar una InterruptedException.
|
|
« Última modificación: 7 Noviembre 2008, 18:08 pm por -Ramc- »
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Wargolth
|
Thread.sleep(1000);
Este código por ejemplo no me lo acepta. Me lo marca como algo desconocido. Sin embargo en la post-data, a qué te refieres exactamente?
Wargolth
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 629
|
ese codigo deve estar dentro de una excepción
|
|
|
En línea
|
|
|
|
Wargolth
|
Sobrepasa mi nivel lo que me estáis diciendo. Pero creo que podré llegar a entenderlo. Conozco la estructura de try catch pero no sé cómo hacer lo que me decís. Esto es lo que intenté y no salió bien: private void b_comezar_actionPerformed(ActionEvent e) { long a = Long.parseLong(ta_numero.getText()); catch (Exception l) { for (int i=1; i<=a; i++) { l_resultado.setText((String) (a-i); Thread.sleep(1000); } } }
Cuando pulso el botón me gustaría que fuese desde el número que le paso a través de un textbox hasta 0 esperando a cada ciclo 1 segundo. Alguna idea? Gracias
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
private void b_comezar_actionPerformed (ActionEvent e ) { long a = Long. parseLong(ta_numero. getText()); try { for (int i=1; i<=a; i++) { l_resultado. setText((String) (a -i ); } //Que haras cuando te de error } }
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Wargolth
|
Parece que funciona "en esencia". Muchas gracias por la adaptación. Lo que pasa que sigo sin captar exactamente lo que hace la función sleep y quién es Thread. Supongo que sabiendo eso se explicaría el porqué se bloquea completamente el programa mientras espera y el porqué de que no me muestre los números intermedios a cada ciclo del bucle. He puesto una instrucción más para ver qué pasaba y para mi sorpresa la ejecuta sin problema. Este es el código: private void b_comezar_actionPerformed (ActionEvent e ) { int a = Integer. parseInt(ta_numero. getText()); try { for (int i=1; i<=a; i++) { l_resultado.setText((a-i)+" "); } l_resultado.setText("Se acabó"); l_resultado.setText("Hubo un error muy gordo"); } }
|
|
|
En línea
|
|
|
|
Wargolth
|
Perdón, me olvidaba de lo que quería preguntar.
1. ¿Porqué se bloquea el programa? 2. ¿Porqué se bloquea durante 10 segundos si le doy como entrada 10 en vez de hacerlo por bloques de 1 segundo en 1 segundo? 3. ¿Por que no muestra a cada etapa en la label el número tal como le ordeno?
Gracias por adelantado!
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Thread es una clase que se encarga de controlar hilos de ejecución, sleep es un método de la clase Thread que hace una pausa en un hilo de ejecución, es un método estatico(declarado como static), por lo que se llama directamente de Thread, sin instanciar la clase, por eso llamamos al método como Thread.sleep(); que recibe los milisegundos de pausa y pausa el hilo actual en ejecución. por eso te da una pausa cuando lo colocas. Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Wargolth
|
Genial explicado, gracias. Qué hay con respecto a estas irregularidades que me causa. Con el último código que puse el programa hace lo siguiente: > Introuzco mi número, pulso en aceptar y después en Comenzar (la label muestra ahora el número que introduje en mi TextBox) > El programa espera diez segundos completamente colgado y muestra en la label "se acabó". 1. ¿Porqué se bloquea el programa? 2. ¿Porqué se bloquea durante 10 segundos si le doy como entrada 10 en vez de hacerlo por bloques de 1 segundo en 1 segundo? 3. ¿Por que no muestra a cada etapa en la label el número tal como le ordeno?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cuenta atrás para revelación de información de Wikileaks
Noticias
|
SCU
|
3
|
2,269
|
27 Febrero 2012, 01:25 am
por SCU
|
|
|
Cuenta atrás para el mayor lanzamiento de nombres de dominio de Internet
Noticias
|
wolfbcn
|
3
|
2,775
|
13 Junio 2012, 14:43 pm
por anonimo12121
|
|
|
La cuenta atrás para ver desnuda a Emma Watson encierra una campaña para ...
Noticias
|
wolfbcn
|
2
|
1,946
|
25 Septiembre 2014, 13:17 pm
por Shout
|
|
|
Cuenta atrás: 100 días para actualizar a Windows 10 gratis
Noticias
|
wolfbcn
|
0
|
1,253
|
20 Abril 2016, 18:06 pm
por wolfbcn
|
|
|
Detener tiempo de cuenta atrás de programas de prueba
Dudas Generales
|
Rnovatis
|
0
|
1,896
|
18 Septiembre 2016, 17:19 pm
por Rnovatis
|
|