Sunday, February 8, 2026
HomeLanguagesJavaJava Applet | How to display a Digital Clock

Java Applet | How to display a Digital Clock

In this article, we shall be animating the applet window with a 1-second delay. The idea is to display the system time of every instance.

Approach: 
Here 6 seven-segment displays are created using the Java Applet library to print the system time in HH:MM:SS format. Each segment of the seven-segment display, numbered as follows can be lit in different combinations to represent the numbers 0-9.

We have 6 seven-segment display for displaying the time in HH:MM:SS pattern. Each segment numbered as the following can be lit in different combinations to represent the numbers 0-9.

We can assume every single segment as 1 bit so (0-9) 10 number can make 10 different combinations. 
e.g. if we want to display 0 we should lit-up the segments 0, 1, 2, 3, 4, 5. So this combination will make the number (2^0 | 2^1 | 2^2 | 2^3 | 2^4 | 2^5) = 63.
 

Below is the implementation of the above approach:

Java




// Java program to illustrate
// digital clock using Applets
   
import java.applet.Applet;
import java.awt.*;
import java.util.*;
   
public class digitalClock extends Applet {
   
    @Override
    public void init()
    {
        // Applet window size
        this.setSize(new Dimension(800, 400));
        setBackground(Color.white);
        new Thread() {
            @Override
            public void run()
            {
                while (true) {
                    repaint();
                    delayAnimation();
                }
            }
        }.start();
    }
   
    // Animating the applet
    private void delayAnimation()
    {
        try {
   
            // Animation delay is 1000 milliseconds
            Thread.sleep(1000);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
   
    // Function that receive segment combination value
    // for each digit, position of the display
    public void display(int val, int pos, Graphics g)
    {
   
        // lit-up the i-th segment
   
        // 0-th segment
        if ((val & 1) != 0)
            g.fillRect(pos, 150, 5, 50);
   
        // 1-st segment
        if ((val & 2) != 0)
            g.fillRect(pos, 145, 50, 5);
   
        // 2-nd segment
        if ((val & 4) != 0)
            g.fillRect(pos + 45, 150, 5, 50);
   
        // 3-rd segment
        if ((val & 8) != 0)
            g.fillRect(pos + 45, 200, 5, 50);
   
        // 4-th segment
        if ((val & 16) != 0)
            g.fillRect(pos, 250, 50, 5);
   
        // 5-th segment
        if ((val & 32) != 0)
            g.fillRect(pos, 200, 5, 50);
   
        // 6-th segment
        if ((val & 64) != 0)
            g.fillRect(pos + 5, 200, 40, 5);
    }
   
    // Paint the applet
    @Override
    public void paint(Graphics g)
    {
        // Combination values of different digits
        int[] digits
            = new int[] { 63, 12, 118,
                          94, 77, 91,
                          123, 14, 127,
                          95 };
   
        // Get the system time
        Calendar time = Calendar.getInstance();
   
        int hour = time.get(Calendar.HOUR_OF_DAY);
        int minute = time.get(Calendar.MINUTE);
        int second = time.get(Calendar.SECOND);
   
        // Deciding AM/PM
        int am = 1;
        if (hour > 12) {
            hour -= 12;
            am = 0;
        }
   
        // Display hour
   
        // tens digit
        display(digits[hour / 10], 150, g);
        // units digit
        display(digits[hour % 10], 225, g);
   
        // Display minute
   
        // tens digit
        display(digits[minute / 10], 325, g);
        // units digit
        display(digits[minute % 10], 400, g);
   
        // Display second
   
        // tens digit
        display(digits[second / 10], 500, g);
        // units digit
        display(digits[second % 10], 575, g);
   
        // Display AM/PM
        if (am == 1)
            g.drawString("am", 650, 250);
        else
            g.drawString("pm", 650, 250);
   
        // Display ratio signs
        g.fillRect(300, 175, 5, 5);
        g.fillRect(300, 225, 5, 5);
   
        g.fillRect(475, 175, 5, 5);
        g.fillRect(475, 225, 5, 5);
    }
}


Output: 

 

RELATED ARTICLES

1 COMMENT

Most Popular

Dominic
32493 POSTS0 COMMENTS
Milvus
126 POSTS0 COMMENTS
Nango Kala
6864 POSTS0 COMMENTS
Nicole Veronica
11990 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12084 POSTS0 COMMENTS
Shaida Kate Naidoo
7000 POSTS0 COMMENTS
Ted Musemwa
7241 POSTS0 COMMENTS
Thapelo Manthata
6951 POSTS0 COMMENTS
Umr Jansen
6936 POSTS0 COMMENTS