1. 程式人生 > >JAVA——編寫時鐘程式

JAVA——編寫時鐘程式

編寫時鐘程式

1.要求

建立一個視窗並實時顯示當前時間,每1秒時鐘內容更新一次,在介面中包含數字式和錶盤式的顯示。

2.語法

  • Java.util.Calendar包的使用 繪製時鐘圖形
  • GregorianCalendar()的用法 Calender now=new GregorianCalendar();
  • 繪製圖形Graphics2D g2D=(Graphics2D)g;,Graphics強制型別轉換成Graphics2D。
  • 獲取系統時間。 1)int hour=now.get(Calendar.HOUR_OF_DAY):取得當前的小時部分; 2)int minute=now.get(Calendar.MINUTE):取得當前時間的分鐘部分; 3)int second =now.get(Calendar.SECOND):取得當前時間的秒。

3.程式碼

繪製時鐘圖形:

//繪製圖形
		Graphics2D g2D=(Graphics2D) g;//Graphics強制型別轉換成Graphics2D
		Insets insets =getInsets();//建立JFrame的邊界物件
		int L=insets.left/2,T=insets.top/2;//L=左邊界的2/1,T=上邊界的2/1
		h =getSize().height;//返回JFrame的高度
		g.setColor(new Color(115,74,18));//設定畫筆顏色為棕色
		//畫圓
		g2D.setStroke(new BasicStroke(5.0f));//勾畫出寬度為4cm的圓
g.drawOval(L+40,T+40,h-80,h-80);// r=h/2-40; x_1=40+r-5+L; y_1=40+r-5-T; ang=60; //繪製時鐘上的12個字 g.setFont(new Font("",Font.BOLD,12)); g.setColor(new Color(255,255,255)); for(int i=1;i<=12;i++) { x=(int)((r+12)*Math.cos(RAD * ang)+x_1); y=(int)((r+12)*Math.sin(RAD * ang)+y_1); g.drawString
(""+ i,x, h-y); ang -=30; }

獲得現在的時間:

Calendar now=new GregorianCalendar();//建立Calender物件now
		int hour=now.get(Calendar.HOUR_OF_DAY);//取得當前的小時部分
		int minute=now.get(Calendar.MINUTE);//取得當前時間的分鐘部分
		int second =now.get(Calendar.SECOND);//取得當前時間的秒
		String st;
		if(hour<10)
			st="0"+hour;
		else
			st=""+hour;
		if(minute<10)
			st+=":0"+minute;
		else
			st +=":"+minute;
		if(second<10)
			st+=":0"+second;
		else
			st +=":"+second;
		//窗體上顯示時間格式,如00:00:00

擦除秒針,原理是將秒針顏色改變為原來的背景顏色(繪製分針和時針的原理與此相同):

if(ss_x>0) {//擦除秒針,原理為改變為原來的背景顏色
			g.setColor(getBackground());
			g.drawLine(x_1, y_1, ss_x, h-ss_y);
		}else {
			old_m = mm;
			old_h = hh;
		}

繪製秒針:

x=(int)(r*0.9*Math.cos(RAD*ss))+x_1;
		y=(int)(r*0.9*Math.sin(RAD*ss))+y_1-2*T;
		g.setColor(new Color(255,99,71));
		g.drawLine(x_1, y_1, x, h-y);
		ss_x=x;
		ss_y=y;

新建視窗並建立一個時間計數器,實現每一秒觸發一次:

	public rw23() {
		super("JAVA 小時鐘");
		setDefaultCloseOperation(3);
		Image image =getToolkit().getImage("1.jpg");
		setIconImage(image);
		setSize(500,500);
		setBackground(Color.black);
		setLocation(300,150);
		setResizable(false);
		setVisible(true);
		show();
		int delay =1000;
		ActionListener draw =new ActionListener() {//建立一個監聽事件
			public void actionPerformed(ActionEvent evt) {
				repaint();
			}
				
		};
		new Timer(delay,draw).start();//建立一個時間計數器,每一秒觸發一次
	}

4.結果

編譯結果如下圖所示: 在這裡插入圖片描述 在這裡插入圖片描述 執行結果如下圖所示: 在這裡插入圖片描述 在這裡插入圖片描述