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();
}
}
}
Rahul says
Download link is not working
ProjectsGeek says
Working on this and let you know.
Anonymous says
Thread.currentThread().sleep(100);
should be written as
Thread.sleep(100);
since sleep is a static method