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 }

