1 //ClockDemo.java
2
3 /*
4 * To change this license header, choose License Headers in Project Properties.
5 * To change this template file, choose Tools | Templates
6 * and open the template in the editor.
7 */
8 package newpackage;
9 import java.awt.*;
10 import java.util.*;
11 import javax.swing.*;
12
13 //数字时钟
14 public class ClockDemo extends JFrame implements Runnable{
15 Thread clock;
16
17 public ClockDemo(){
18 super("数字时钟"); //调用父类构造函数
19 setFont(new Font("Times New Roman",Font.BOLD,60)); //设置时钟的显示字体
20 start(); //开始进程
21 setSize(280,100); //设置窗口尺寸
22 setVisible(true); //窗口可视
23 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
24 }
25
26 public void start(){ //开始进程
27 if (clock==null){ //如果进程为空值
28 clock=new Thread(this); //实例化进程
29 clock.start(); //开始进程
30 }
31 }
32
33 public void run(){ //运行进程
34 while (clock!=null){
35 repaint(); //调用paint方法重绘界面
36 try{
37 Thread.sleep(1000); //线程暂停一秒(1000毫秒)
38 }
39 catch (InterruptedException ex){
40 ex.printStackTrace(); //输出出错信息
41 }
42 }
43 }
44
45 public void stop(){ //停止进程
46 clock=null;
47 }
48
49 public void paint(Graphics g){ //重载组件的paint方法
50 Graphics2D g2=(Graphics2D)g; //得到Graphics2D对象
51 Calendar now=new GregorianCalendar(); //实例化日历对象
52 String timeInfo=""; //输出信息
53 int hour=now.get(Calendar.HOUR_OF_DAY); //得到小时数
54 int minute=now.get(Calendar.MINUTE); //得到分数
55 int second=now.get(Calendar.SECOND); //得到秒数
56
57 if (hour<=9)
58 timeInfo+="0"+hour+":"; //格式化输出
59 else
60 timeInfo+=hour+":";
61 if (minute<=9)
62 timeInfo+="0"+minute+":";
63 else
64 timeInfo+=minute+":";
65 if (second<=9)
66 timeInfo+="0"+second;
67 else
68 timeInfo+=second;
69
70 g.setColor(Color.white); //设置当前颜色为白色
71 Dimension dim=getSize(); //得到窗口尺寸
72 g.fillRect(0,0,dim.width,dim.height); //填充背景色为白色
73 g.setColor(Color.orange); //设置当前颜色为橙色
74 g.drawString(timeInfo,20,80); //显示时间字符串
75 }
76
77 public static void main(String[] args){
78 new ClockDemo();
79 }
80 }