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:
				
					



