lunes, 21 de octubre de 2013

Como hacer un cronometro en java o Como hacer un reloj en java.- Código

Pantalla
//Inicio Cronometro_Reloj.java
package paquetedelproyecto;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.util.Calendar;


public class Cronometro_Reloj extends JFrame {

    JLabel tiempo;
    public static String h0, m0, s0;

   
    public Cronometro_Reloj() {
       
        setTitle("Cronómetro Reloj");
        setSize( 260, 104);
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        setLayout( new BorderLayout() );

        //Etiqueta donde se colocara el tiempo
        tiempo = new JLabel( h0+":"+m0+":"+s0 );
        tiempo.setFont( new Font( Font.SERIF, Font.BOLD, 50 ) );
        tiempo.setHorizontalAlignment( JLabel.CENTER );
        tiempo.setForeground( Color.BLUE );
        tiempo.setBackground( Color.WHITE );
        tiempo.setOpaque( true );
        add( tiempo, BorderLayout.NORTH );
       
        setVisible( true );
       
        Integer horas, minutos, segundos;
        horas = Integer.parseInt(h0);
        minutos = Integer.parseInt(m0);
        segundos = Integer.parseInt(s0);

        String hor=h0, min=m0, seg;
       
        long t1, t2;
        String st1, st2;
        Calendar ahora1 = Calendar.getInstance();
        t1 = ahora1.getTimeInMillis();
        st1 = Long.toString(t1);

        try {
           
            //Mientras cronometroActivo sea verdadero entonces seguira
            //aumentando el tiempo

            while( true ) {

                //La siguiente linea es para hacer un wait ayuda
                //para la precisión del siguiente proceso.- demorar un segundo
                Thread.sleep( 500 );
               
                //Esto es lo que provoca la demorada del segundo exacto
                Calendar ahora2 = Calendar.getInstance();
                t2 = ahora2.getTimeInMillis();
                st2 = Long.toString(t2);
                if (st2.charAt(st2.length()-4)!=st1.charAt(st1.length()-4)) {
                    segundos += 1;
                    Calendar ahora3 = Calendar.getInstance();
                    t1 = ahora3.getTimeInMillis();
                    st1 = Long.toString(t1);
                }   
                //fin de lo que provoca la demorada del segundo exacto
               
                if ( segundos == 60 ) {
                    segundos=0;
                    minutos += 1;
                }   
                if( minutos == 60 ) {
                    minutos = 0;
                    horas++;
                }       
               
                //Los siguientes if's es para colocar el cero
                //a los numeros menores a 9
                if( horas < 10 ) hor = "0" + horas;
                else hor = horas.toString();
              
                if( minutos < 10 ) min = "0" + minutos;
                else min = minutos.toString();

                if( segundos < 10 ) seg = "0" + segundos;
                else seg = segundos.toString();

                tiempo.setText( hor + ":" + min + ":" + seg );
            }
        }catch(Exception e){}
    }
   
    //procedure principal
    public static void reloj_main(String[] args)
    {
        h0="00";
        m0="00";
        s0="00";
       
        //Lo siguiente agarrar en ejecución MS-DOS
        //parámetros definidos separados por espacios
        if (args.length > 0) {
            h0 = args[0];
            m0 = args[1];
            s0 = args[2];
        }
        //
       
        //Run Cronometro_Reloj()
        new Cronometro_Reloj();       
    }
    //
   
}//Fin Cronometro_Reloj.java


/* Archivo Fuente java con el método main(String[] args)

En SuPublicClassPrincipal.java incluir dentro de sus sentencias

import static paquetedelproyecto.Cronometro_Reloj.reloj_main;

public class SuPublicClassPrincipal {

     public static void main(String[] args) {

           //Llama al método
           reloj_main(new String[0]);

     }

}
*/