Share with others

Developing Clock In java using Multi threading

import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
public class Clock extends Applet implements Runnable
{
    Thread timer;       // The thread that displays clock
    SimpleDateFormat formatter;  // Formats the date displayed
    Date currentDate;            // Used to get date to display
    Color handColor,numberColor;   // Color of main hands and dial// Color of second hand and numbers
    int xcenter = 80, ycenter = 55; // Center position
    public void init()
    {
        formatter = new SimpleDateFormat (“EEE MMM dd hh:mm:ss yyyy”);
        currentDate = new Date();
        handColor = Color.blue;
        numberColor = Color.darkGray;    
    }
    public void paint(Graphics g)
    {
        int xh, yh, xm, ym, xs, ys;
        int s = 0, m = 10, h = 10;
        String today;
        currentDate = new Date();
        formatter.applyPattern(“s”);
        s = Integer.parseInt(formatter.format(currentDate));
        formatter.applyPattern(“m”);
        m = Integer.parseInt(formatter.format(currentDate));
        formatter.applyPattern(“h”);      
        h = Integer.parseInt(formatter.format(currentDate));     
        xs = (int) (Math.cos(s * Math.PI / 30 – Math.PI / 2) * 45 + xcenter);
        ys = (int) (Math.sin(s * Math.PI / 30 – Math.PI / 2) * 45 + ycenter);
        xm = (int) (Math.cos(m * Math.PI / 30 – Math.PI / 2) * 40 + xcenter);
        ym = (int) (Math.sin(m * Math.PI / 30 – Math.PI / 2) * 40 + ycenter);
        xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 – Math.PI / 2) * 30 + xcenter);
        yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 – Math.PI / 2) * 30 + ycenter);
        formatter.applyPattern(“EEE MMM dd HH:mm:ss yyyy”);
        today = formatter.format(currentDate);      
        g.setColor(numberColor);
        g.drawString(today, 5, 125);   
        g.drawLine(xcenter, ycenter, xs, ys);
        g.setColor(handColor);
        g.drawLine(xcenter, ycenter-1, xm, ym);
        g.drawLine(xcenter-1, ycenter, xm, ym);
        g.drawLine(xcenter, ycenter-1, xh, yh);
        g.drawLine(xcenter-1, ycenter, xh, yh);       
        g.setColor(handColor);
        g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);
        g.setColor(numberColor);
        g.drawString(“9”, xcenter-45, ycenter+3);
        g.drawString(“3”, xcenter+40, ycenter+3);
        g.drawString(“12”, xcenter-5, ycenter-37);
        g.drawString(“6”, xcenter-3, ycenter+45);
    }
    public void start()
    {
        timer = new Thread(this);
        timer.start();
    }
    public void stop()
    {
        timer = null;
    }
    public void run()
    {
        Thread me = Thread.currentThread();
        while (timer == me)
        {
            try
            {
                Thread.currentThread().sleep(100);
            } catch (InterruptedException e) {}
            repaint();
        }
    }
}


Share with others