![Java模擬時鐘制作案例_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/fbe3a148-56da-48c4-84f3-7074f4273794/fbe3a148-56da-48c4-84f3-7074f42737941.gif)
![Java模擬時鐘制作案例_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/fbe3a148-56da-48c4-84f3-7074f4273794/fbe3a148-56da-48c4-84f3-7074f42737942.gif)
![Java模擬時鐘制作案例_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/fbe3a148-56da-48c4-84f3-7074f4273794/fbe3a148-56da-48c4-84f3-7074f42737943.gif)
![Java模擬時鐘制作案例_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/fbe3a148-56da-48c4-84f3-7074f4273794/fbe3a148-56da-48c4-84f3-7074f42737944.gif)
![Java模擬時鐘制作案例_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/fbe3a148-56da-48c4-84f3-7074f4273794/fbe3a148-56da-48c4-84f3-7074f42737945.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Java模擬時鐘制作案例Java開發(fā)實例需求分析v模擬時鐘,把它放在程序中可以給人一種清新的感覺。比起數(shù)字時鐘來說,有一定的真實感懷舊情結。看到秒針一下一下的轉(zhuǎn)動,時時提醒,時間在不斷流逝,要我們珍惜時間。v子在川上曰:逝者如斯夫。軟件分析v類:實現(xiàn):ActionListener 繼承:JFramev監(jiān)聽:timer或是進程,本例使用timer。v時間戳:使用Date,SimpleDateFormat。v繪圖:重寫Graphics的paint方法。v動畫:在actionPerformed中修改坐標,并repaint。構建框架v主類time1.v實現(xiàn)接口。v繼承Jframe。v添加main方法完
2、善代碼v添加timerv通過Date獲取當前時間v通過SimpleDateFormat處理時間格式。v實例化主類,使其在控制臺打印當前時間,每隔一秒打印一次。修改后的代碼如下。程序代碼v導入類和文件。程序代碼數(shù)字時鐘v添加JLabel,在JLabel上顯示時間v把JLabel添加到JFrame上。程序代碼v導入類和文件。程序代碼數(shù)字時鐘v運行效果。繪制秒針v使用直線繪制秒針。定義秒針Line2D.Double l Line2D.Double l =new Line2D.Double(125,50,125,125);v修改坐標。s1=Integer.parseInt(s.format(d);l.
3、x1=125+70*Math.cos(s1*6-90)*Math.PI/180f);l.y1=125+70*Math.sin(s1*6-90)*Math.PI/180f);repaint();繪制秒針v重寫paint:public void paint(Graphics g) super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.draw(l); 繪制秒針v運行效果。分針
4、和時針v分針的繪制和秒針一樣。這里不再分析。v時針的繪制。時針每小時轉(zhuǎn)動30,一分鐘轉(zhuǎn)動0.5。時針的角度為小時數(shù)*30+分鐘數(shù)*0.5。如:一點半的角度為:1*30+30*0.5=30+15=45三點半的角度為: 3*30+30*0.5=90+15=105程序代碼v主類程序代碼程序代碼運行效果v運行效果面板刻度v繪制刻度vl1=new Line2D.Double60;vfor(int i=0 ;il1.length;i+)vvdouble b=new double4;vint j;vif(i%5=0)vif(i%15=0)vj=50;velse vj=60;v面板刻度v繪制刻度velse v
5、j=70;vvb0=125+80*Math.cos(i*6-90)*Math.PI/180d);vb1=125+80*Math.sin(i*6-90)*Math.PI/180f);vb2=125+j*Math.cos(i*6-90)*Math.PI/180f);vb3=125+j*Math.sin(i*6-90)*Math.PI/180f);vl1i =new Line2D.Double(b0,b1,b2,b3);v運行效果程序代碼程序代碼程序代碼程序代碼程序代碼代碼優(yōu)化與改進v以上的代碼已經(jīng)能基本完成時鐘的功能。有些代碼還可以進一步優(yōu)化。使代碼更加簡潔。重用性更好。通過以下3方面進行優(yōu)化。v
6、1、時間的獲取,使用一個類完成。v2、坐標的轉(zhuǎn)換,使用函數(shù)。定義一個point類。v3、坐標的轉(zhuǎn)換,使用接口。v4、美化指針,可以為不規(guī)則形狀。時間的獲取時間獲取v修改: actionPerformedg=new gettime();jl.setText(g.getH()+:+g.getM()+:+g.getS();s1=g.getS();m1=g.getM();h1=g.getH();定義一個point類坐標的轉(zhuǎn)換,使用方法添加方法:point xy(int x,int y ,int r, float a)point p=new point();p.setX(x+r*Math.cos(a-9
7、0)*Math.PI/180d);p.setY(y+r*Math.sin(a-90)*Math.PI/180d);return p;坐標的轉(zhuǎn)換,使用方法調(diào)用方法:p0=xy(125,125,75,s1*6);s.x1=p0.getX();s.y1=p0.getY();p0=xy(125,125,65,m1*6);m.x1=p0.getX();m.y1=p0.getY();p0=xy(125,125,55,(h1*30+m1/2f);h.x1=p0.getX();h.y1=p0.getX();坐標的轉(zhuǎn)換,使用方法調(diào)用方法:point p0; p0=new point();p0=xy(125,12
8、5,80,i*6);b0=p0.getX();b1=p0.getY();p0=xy(125,125,j,i*6);b2=p0.getX();b3=p0.getY();l1i =new Line2D.Double(b0,b1,b2,b3);坐標的轉(zhuǎn)換,使用接口v定義接口package t;public interface point_xy point point_xy(int x,int y ,int r, float a);坐標的轉(zhuǎn)換,使用接口v實現(xiàn)接口public class time6 extends JFrame implements point_xy,ActionListenerpub
9、lic point point_xy(int x,int y ,int r, float a) point p=new point();p.setX(x+r*Math.cos(a-90)*Math.PI/180d);p.setY(y+r*Math.sin(a-90)*Math.PI/180d);return p; ;美化指針v使用GeneralPath static GeneralPath tick_s = new GeneralPath(); tick_s.moveTo(120, 125); tick_s.quadTo(120,120,125, 120); tick_s.quadTo(150,100,195, 125 );tick_s.quadTo(150,150,125, 130); tick_s.quadTo(120,130,120, 125 );g2.fill(tick_s);美化指針v調(diào)用AffineTransformpublic AffineTransform sc =new AffineTransform();sc.se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教學儀器知識產(chǎn)權保護合同
- 全新轎車購買合同范本
- 2025年度金融貸款居間風險控制合同
- 全國授權合同范本
- 養(yǎng)鵝合同范例
- 切割支撐合同范本
- 業(yè)主和裝修工長合同范例
- 2025年度花卉市場渠道建設與拓展合同
- 自愿租賃房屋意向合同范本
- n 1賠償合同范本
- 生物技術制藥課件
- 2020年新概念英語第一冊lesson97-102單元檢測
- 工業(yè)級七水硫酸亞鐵
- 追求理解的教學設計課件資料文檔
- 腹主動脈瘤(護理業(yè)務學習)
- 注射用醋酸亮丙瑞林微球
- 部編版語文五年級下冊 全冊教材分析
- 胎兒性別鑒定報告模板
- CLSIM100-S24英文版 抗菌藥物敏感性試驗執(zhí)行標準;第二十四版資料增刊
- 惠豐f1000g變頻器說明書
- 耳穴療法治療失眠
評論
0/150
提交評論