Complete source code below, will show you, how to
create simple digital clock in java.
************************************************************************
COMPLETE SOURCE CODE FOR : SimpleDigitalClock.java
************************************************************************
import javax.swing.*;
import java.awt.*;
import java.util.Date;
public class SimpleDigitalClock extends JPanel
{
JFrame frame;
int currentHour;
int currentMinute;
int currentSecond;
//Font that will be use to show digital clock
Font myFont=new Font("Tahoma",Font.BOLD+Font.ITALIC,20);
//Color that will be use to show digital clock
Color myColor=new Color(255,0,0);
//Font metrics that will use to store font informations
//For example, width of a character
FontMetrics fm;
public SimpleDigitalClock()
{
//Create a window using JFrame with title ( Simple Digital Clock )
frame=new JFrame("Simple Digital Clock");
//add(this) mean add created panel into JFrame
//Which panel ?
//See line 81 and 7 (I hope you understand it)
frame.add(this);
//Set default close operation for JFrame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Set JFrame size
frame.setSize(300,300);
//Make JFrame locate at center
frame.setLocationRelativeTo(null);
//Make JFrame visible
frame.setVisible(true);
/*
*Loop that will make sure panel show current time
*like current second, current minute and current hour.
*/
while(true)
{
//It will do all code in method paint(See line 67)
repaint();
try
{
Thread.sleep(900);
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
}
public void paint(Graphics g)
{
super.paint(g);
/*
*Create current Date object. It means it store information
*about current hour, minute and second.
*/
Date myDate=new Date();
currentHour=myDate.getHours();
currentMinute=myDate.getMinutes();
currentSecond=myDate.getSeconds();
//Set font that will use to draw digital number
g.setFont(myFont);
//Information about distance between number in digital clock
fm=g.getFontMetrics();
int hourXCoordinate=20;
int minuteXCoordinate=hourXCoordinate+(fm.getMaxAdvance()*2);
int secondXCoordinate=hourXCoordinate+(fm.getMaxAdvance()*4);
//Set color that will use to draw digital number
g.setColor(myColor);
//Draw hour, draw (:) between number, draw minute and draw second.
g.drawString(Integer.toString(currentHour),hourXCoordinate,20);
g.drawString(":",(hourXCoordinate+minuteXCoordinate)/2,20);
g.drawString(Integer.toString(currentMinute),minuteXCoordinate,20);
g.drawString(":",(secondXCoordinate+minuteXCoordinate)/2,20);
g.drawString(Integer.toString(currentSecond),secondXCoordinate,20);
}
public static void main(String[]args)
{
SimpleDigitalClock sdc=new SimpleDigitalClock();
}
}
************************************************************************
JUST COMPILE AND EXECUTE IT
************************************************************************