Para implementar el cronometro hemos creado una ventana que contiene un label llamado "tiempo", en el cual vamos a mostrar el tiempo. Primero debemos hacer la clase "ejecutable" para ello anadimos "implements runnable" a la clase:
public class cronometro implements Runnable{
Debemos crear un metodo "run" para poder usar hilos, dentro de este, hay un ciclo infinito, que se detiene 1000 milisegundos (1 seg), e incrementa un uno el entero correspondiente a los segundos, cuando este es igual a 59 se aumentan los minutos, y cuando los minutos son iguales a 59 se aumentan las horas
int horas=0, minutos=0, segundos=0;
public void run() {
try
{
for(;;) {
if(segundos==59) { segundos=0; minutos++; }
if(minutos==59) { minutos=0; horas++; }
segundos++;
tiempo.setText(horas+":"+minutos+":"+segundos);
crono.sleep(1000); }
}
catch (InterruptedException e) { System.out.println(e.getMessage()); }
}
Usaremos hilos para manejar el tiempo, para declaramos un hilo global
Thread crono;
Y en el constructor de la clase iniciamos el hilo.
/** Creates new form cronometro */
public cronometro() {
initComponents();
crono = new Thread(this);
crono.start();
}
Y listo! tenemos un cronometro funcionando, podemos pararlo, pausarlo, etc solo es de usar la funcion apropiada.
Codigo Fuente:
/**
*
* @author ces ces2601[arroba]gmail.com
*/
import javax.swing.JFrame;
public class cronometro implements Runnable{
Thread crono;
javax.swing.JLabel tiempo = new javax.swing.JLabel();
/** Creates new form cronometro */
public cronometro() {
JFrame ventana = new JFrame("Cronometro");
ventana.add(tiempo);
ventana.setSize(150,100);
ventana.setVisible(true);
crono = new Thread(this);
crono.start();
}
int minutos=0, segundos=0, horas=0;
public void run()
{ try {
for(;;) {
if(segundos==59) { segundos=0; minutos++; }
if(minutos==59) { minutos=0; horas++; }
segundos++;
tiempo.setText(horas+":"+minutos+":"+segundos);
crono.sleep(1000); }
}
catch (InterruptedException e) { System.out.println(e.getMessage()); }
}
public static void main(String args[])
{
new cronometro();
}
}