elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Busco función que espere tiempo para hacer una cuenta-atrás
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Busco función que espere tiempo para hacer una cuenta-atrás  (Leído 9,360 veces)
Wargolth

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Busco función que espere tiempo para hacer una cuenta-atrás
« en: 7 Noviembre 2008, 18:03 pm »

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 Desconectado

Mensajes: 495



Ver Perfil
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #1 en: 7 Noviembre 2008, 18:05 pm »

Código:
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

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #2 en: 8 Noviembre 2008, 10:09 am »

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 Desconectado

Mensajes: 628



Ver Perfil
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #3 en: 8 Noviembre 2008, 14:40 pm »

ese codigo deve estar dentro de una excepción
En línea

Wargolth

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #4 en: 8 Noviembre 2008, 18:29 pm »

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:

Citar
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 Desconectado

Mensajes: 495



Ver Perfil
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #5 en: 8 Noviembre 2008, 18:52 pm »

Código
  1. private void b_comezar_actionPerformed(ActionEvent e) {
  2.        long a = Long.parseLong(ta_numero.getText());
  3.        try {
  4.            for (int i=1; i<=a; i++) {
  5.                l_resultado.setText((String) (a-i);
  6.                Thread.sleep(1000);
  7.            }
  8.        } catch(InterruptedException e) {
  9.                  //Que haras cuando te de error
  10.        }
  11. }
En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Wargolth

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #6 en: 8 Noviembre 2008, 19:27 pm »

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:

Código
  1.    private void b_comezar_actionPerformed(ActionEvent e) {
  2.        int a = Integer.parseInt(ta_numero.getText());
  3.        try {            
  4.            for (int i=1; i<=a; i++) {
  5.                 l_resultado.setText((a-i)+" ");
  6.                 Thread.sleep(1000);            
  7.            }
  8.            l_resultado.setText("Se acabó");
  9.        } catch(InterruptedException b) {
  10.             l_resultado.setText("Hubo un error muy gordo");
  11.        }
  12.    }
En línea

Wargolth

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #7 en: 8 Noviembre 2008, 19:32 pm »

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 Desconectado

Mensajes: 495



Ver Perfil
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #8 en: 8 Noviembre 2008, 19:33 pm »

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.
Citar
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

Desconectado Desconectado

Mensajes: 67



Ver Perfil WWW
Re: Busco función que espere tiempo para hacer una cuenta-atrás
« Respuesta #9 en: 8 Noviembre 2008, 19:52 pm »

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ó".

Cita de: Wargolth
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines