subprograma de Java | cronómetro digital

Este artículo proporcionará una instancia de creación de un tipo de cronómetro con Java Applet, AWT y Thread.

Usaremos toda esta biblioteca para hacer un modelo funcional de un cronómetro. La GUI tendrá 3 botones para la interacción, a saber, inicio (para iniciar el tiempo), reinicio (para restablecer el tiempo al valor predeterminado) y detener (para detener el temporizador).

Con la ayuda de actionListener en Java, podemos saber qué botón se presiona y cuándo.

  1. Cuando se presiona el botón de inicio, iniciamos el temporizador. Mientras no se presione el botón de reinicio o parada, mantendremos el temporizador en marcha, es decir, cambiaremos el valor del temporizador (hh:mm:ss:ms) cada 1 milisegundo y actualizaremos la pantalla.
  2. Cuando se presiona el botón de reinicio, detendremos el temporizador y lo configuraremos en su valor predeterminado (00:00:00:000).
  3. Cuando se presiona el botón de parada, detenemos el temporizador con el valor tal como está.

A continuación se muestra la implementación de Digital Stopwatch

// Java program to illustrate
// digital stop watch
// using Applets
  
// importing required packages
import java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
  
public class GeeksforGeeks extends Applet implements Runnable, ActionListener {
      
// Panel to keep all the buttons and labels
    Panel p;
    Label display;
  
    // Button
    Button start, stop, reset;
  
    // Time
    int hour, minute, second, millisecond;
  
    // string to be displayed on the label
    String disp;
  
    // State of stopwatch on/off
    boolean on;
  
    // initialization
    public void init()
    {
        // initially off
        on = false;
  
        p = new Panel();
        // Setting layout of the panel
        p.setLayout(new GridLayout(4, 1, 6, 10));
  
        // initial time 00 : 00 : 00 : 000
        hour = minute = second = millisecond = 0;
  
        // Label
        display = new Label();
        disp = "00 : 00 : 00 : 000";
        display.setText(disp);
        p.add(display);
  
        // Start button
        start = new Button("Start");
        start.addActionListener((ActionListener) this);
        p.add(start);
  
        // Reset button
        reset = new Button("Reset");
        reset.addActionListener((ActionListener) this);
        p.add(reset);
  
        // Stop button
        stop = new Button("Stop");
        stop.addActionListener((ActionListener) this);
        p.add(stop);
  
        add(p);
  
        // starting thread
        new Thread(this, "StopWatch").start();
    }
  
    // Reset Function
    // reset to default value
    public void reset()
    {
        try {
            Thread.sleep(1);
        }
        catch (Exception e) {
            System.out.println(e);
        }
        hour = minute = second = millisecond = 0;
    }
  
    // update function
    // update the timer
    public void update()
    {
        millisecond++;
        if (millisecond == 1000) {
            millisecond = 0;
            second++;
            if (second == 60) {
                second = 0;
                minute++;
                if (minute == 60) {
                    minute = 0;
                    hour++;
                }
            }
        }
    }
  
    // changing label
    public void changeLabel()
    {
  
        // Properly formatting the display of the timer
        if (hour < 10)
            disp = "0" + hour + " : ";
        else
            disp = hour + " : ";
  
        if (minute < 10)
            disp += "0" + minute + " : ";
        else
            disp += minute + " : ";
  
        if (second < 10)
            disp += "0" + second + " : ";
        else
            disp += second + " : ";
  
        if (millisecond < 10)
            disp += "00" + millisecond;
        else if (millisecond < 100)
            disp += "0" + millisecond;
        else
            disp += millisecond;
  
        display.setText(disp);
    }
  
    // thread.run function
    public void run()
    {
  
        // while the stopwatch is on
        while (on) {
            try {
                // pause 1 millisecond
                Thread.sleep(1);
                // update the time
                update();
                // changeLabel
                changeLabel();
            }
            catch (InterruptedException e) {
                System.out.println(e);
            }
        }
    }
  
    // actionPerformed
    // To listen to the actions on the buttons
    public void actionPerformed(ActionEvent e)
    {
  
        // start a thread when start button is clicked
        if (e.getSource() == start) {
            // stopwatch is on
            on = true;
            new Thread(this, "StopWatch").start();
        }
  
        // reset
        if (e.getSource() == reset) {
            // stopwatch off
            on = false;
            reset();
            changeLabel();
        }
  
        if (e.getSource() == stop) {
            // stopwatch off
            on = false;
        }
    }
}

Producción :

Mira aquí

Publicación traducida automáticamente

Artículo escrito por ShivamKD y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *