Contador de tiempo

Iniciado por Baal_30, 25 Febrero 2016, 22:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Baal_30

Muy buenas, estoy intentando hacer que cuando le de a un botón se ponga un contador que cuente hasta "X" segundos, y mientras este tiempo que deje inactivo el mismo botón.

He estado buscando y solo encuentro cosas con timer pero no explican exactamente lo que quiero.

No se si me he explicado, un ejemplo sería un botón de "construir" y hasta que no ha terminado de construir no me vuelva a dejar pulsar el botón.

Gracias de antemano.
«La suerte es el cuidado de los detalles». -Winston Churchill

El Benjo

En el evento click del botón deshabilita el mismo botón.
En el evento 'tick' del timer compara si se ha cumplido con el tiempo establecido, de ser así dejas de contar el tiempo y vuelves a habilitar el botón.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Baal_30

Y para mostrar un contador (un label por ejemplo) con el tiempo que falta para que llegue a cero el timer, como sería ¿?
«La suerte es el cuidado de los detalles». -Winston Churchill

3n31ch

Puedes por ejemplo hacer un thread, y dentro del mismo un ciclo for, que realice por ejemplo 60 iteraciones, y en cada iteración hacemos un Thread.sleep(1000) por lo que se demoraría 1 minuto en terminar de ejecutarse, y a su vez, dentro del mismo ciclo for cambias el texto del label poniendo el tiempo... algo así:

Código (java) [Seleccionar]

for(int time = 60;0<time;time--) {
    label.setText(time + "s Restantes");
    Thread.sleep(1000);
}



Algo por el estilo, lo que no recuerdo es si después de un setText es necesario un repaint, hace mucho que no programo en Java, xD!.

El Benjo

Lo que comenta "Nacho" sobre el repaint creo que no sería necesario. Yo tampoco programo en JAVA, pero las reglas de la programación orientada a objetos y/o eventos en general suelen ser las mismas, y en este caso lo que ocurre con el repaint sería de hecho que el objeto label, al detectar que han cambiado el texto que contiene, se dibuja él mismo (los mismos objetos manejan la forma en que se dibuja su contenido y cuando). Ahora, el repaint no es necesario, sino que (creo que) el control dispara el evento que indica que se ha vuelto a dibujar.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.