




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京郵電大學(xué)世紀(jì)學(xué)院實習(xí)報告實 習(xí) 報 告 課程名稱 信息系統(tǒng)認(rèn)知實習(xí) 實習(xí)題目 java時鐘動畫 專 業(yè) 班 級 學(xué)號 學(xué)生姓名 實習(xí)成績 指導(dǎo)教師 2010年 1 月前言設(shè)計基本的內(nèi)容?,F(xiàn)在的各種時鐘花樣百出,千奇百怪,功能亦是越來越先進(jìn)了。我很喜歡這些各式各樣的時鐘,所以希望自己也能設(shè)計出一個來。于是,我希望自己能夠用自己所學(xué)的Java知識設(shè)計出一個自己的時鐘動畫,即使是最簡單的,但我相信這是暫時的。只要我能夠努力學(xué)好Java知識,將來一定能夠設(shè)計出更好更完美的時鐘動畫。第一章 技術(shù)介紹Java技術(shù)介紹、編程環(huán)境介紹JAVA技術(shù)介紹:Java技術(shù)是一門編程語言,也是一個平臺,它基于Jav
2、a虛擬機(jī)技術(shù),借助這個東西建立了跨平臺的優(yōu)勢。(題外話:Java熱門的原因之一就是一個跨平臺的概念,和跨平臺類似跨瀏覽器的好處也是如此,這也是現(xiàn)在AJAX技術(shù)流行的原因之一。另外現(xiàn)在熱炒的RIA富客戶端的概念下的技術(shù)除了AJAX外還有Adobe的Flash/Flex,微軟的Silver Light,SUN的JavaFX等,個人更看好FLash/Flex,原因是Flash插件在瀏覽器端占用率很高)Java技術(shù)的重要性就不講了,從最近流行的一個統(tǒng)計數(shù)據(jù)上來說,目前世界上編程語言Java 、C 、VB、C+依次排名前4位,這排名本身不說明什么,至少也是工業(yè)界對編程語言使用上一個側(cè)面的反映吧。Java
3、編程語言與眾不同之處在于:Java程序既是編譯型的(轉(zhuǎn)換為一種稱為Java字節(jié)碼的中間語言),又是解釋型的(JVM 對字節(jié)碼進(jìn)行解析和運行)。編譯只進(jìn)行一次,而解釋在每次運行程序時都會進(jìn)行。編譯后的字節(jié)碼采用一種針對JVM 優(yōu)化過的機(jī)器碼形式;解釋器是JVM 的實現(xiàn)。這段是摘自網(wǎng)上的,編譯原理學(xué)的不是很好,對這門語言的背后運行機(jī)制理解到這樣了。Java平臺是一種純軟件平臺,它有三個版本Java SE、JavaEE、Java ME。Java SE(Java Platform,Standard Edition)這個版本以前叫做J2SE,后來版本號從1.4直接跳到5.0,其實也就是1.5,所以就叫成
4、Java SE 5.0。目前Java開發(fā)人員使用較多的版本是5.0,當(dāng)然還有Java SE 6.0這個更新的版本。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實時環(huán)境中使用的Java 應(yīng)用程序。Java SE還包含了支持Java Web服務(wù)開發(fā)的類,并為Java EE這個版本提供基礎(chǔ)。雖說桌面應(yīng)用程序,Java一直不被看好,但也稍微提一下,負(fù)責(zé)桌面GUI開發(fā)的類庫我知道的有:JDK自帶的主要是AWT/SWING這個Java原生類庫;也可以使用IBM的SWT/JFace這個第三方類庫。開發(fā)工具我了解的有:NetBeans(最近已經(jīng)是6.0final版了,做GUI有使用VB的感覺),Eclipse
5、(SWT/JFace這個項目其實就是做Eclipse項目時擴(kuò)展出來的,所以對SWT/JFace支持的也不錯)。Java EE(Java Platform,Enterprise Edition)這個版本以前叫做J2EE,也就是大家可能聽得比較多的,也是Java比較流行的領(lǐng)域,Java的企業(yè)級版本。Java EE下有很多流行的開發(fā)框架,像Struts、Spring、Hibernate這種流行的所謂SSH組合等。根據(jù)項目大小、應(yīng)用領(lǐng)域,技術(shù)平臺的選擇面還是很多的,除了Java EE,還有.Net,LAMP組合(Linux、Apatch、MySql、PHP組合),相對來說比較新Ruby在Ruby on
6、 Rails的框架應(yīng)用,后兩者可能在相對來說比較輕量級的Web領(lǐng)域運用成功案例比較多,更重量的企業(yè)級潛力還有待挖掘。Java ME(Java Platform,Micro Edition)這個版本以前叫做J2ME。應(yīng)用領(lǐng)域像各種移動設(shè)備和嵌入式設(shè)備,比如:手機(jī)、PDA、電視機(jī)頂盒和打印機(jī)。Java ME不是太熟悉,不過移動設(shè)備和嵌入式設(shè)備的開發(fā)個人覺得算是比較有意思的領(lǐng)域,最近比較矚目的業(yè)界新聞有一個就是Google發(fā)布開源智能手機(jī)操作系統(tǒng)開發(fā)平臺Android,也就是前一陣子炒得很火的GPhone(原來Google出的不是手機(jī),而是一個手機(jī)操作系統(tǒng)開發(fā)平臺)。這個平臺貌似會對Java ME有
7、些沖擊,按照網(wǎng)上的消息,Android包括:1、高度定制的Linux操作系統(tǒng)內(nèi)核及智能手機(jī)硬件驅(qū)動支持;2、經(jīng)過Google修改過的Java虛擬機(jī)Dalvik,這里的性能比SUN的Hotspot高,支持大部分Java核心類庫;3、大量智能手機(jī)開發(fā)核心類庫;4、大量現(xiàn)成的智能手機(jī)應(yīng)用軟件;5、基于Eclipse的開發(fā)環(huán)境。也是按照網(wǎng)上的說法,Java EE提供了統(tǒng)一的編程平臺,但不能調(diào)用操作系統(tǒng)的資源;而Android下直達(dá)操作系統(tǒng),上直達(dá)應(yīng)用軟件,如:瀏覽器、日歷、地圖等。Java開發(fā)工具很多,個人使用的IDE有Eclipse和NetBeans。Eclispe比較流行,各種插件也多,當(dāng)然用起來
8、也不錯;NetBeans現(xiàn)在也是越做越好了,介紹這兩個IDE主要是開源的,當(dāng)然還有其它工具如JBuilder、IntelliJ、JCreator。這些IDE各有優(yōu)勢劣勢,根據(jù)你開發(fā)的項目來選擇了。JAVA 編程環(huán)境:一.下載與安裝開發(fā)工具箱(JDK) 1.java(TM) SE Development Kits,即JDK 網(wǎng)址: 2.設(shè)置環(huán)境變量 右擊 我的電腦->屬性->高級->環(huán)境變量 Path:系統(tǒng)在任何路徑下都可以識別Java命令需要設(shè)置的變量 Path: ;C:Progran Filesjavajdk1.6.0_01bin classpath:為java
9、加載類(包括class,lib)的路徑,只有類在classpath中, Java命令才能識別 classpath: .;Progran Filesjavajdk1.6.0_01libdt.jar ;Progran Filesjavajdk1.6.0_01libtools.jar JAVA_HOME:java的安裝路徑 JAVA_H
10、OME: Progran Filesjavajdk1.6.0_01 二.下載Java開發(fā)工具 1.下載Eclipse Eclipse3.3 網(wǎng)址:/ 點擊Download Eclipse找到 Eclipse Classic 3.3下載 下載完后,解壓即可使用 2.Eclipse插件 (1) XMLBuddy:編輯xml文件;下載地址為 (2) Fat Jar:打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等; 下載地址為: (3) Log4E:Log4j插件,提供各種與log4j相關(guān)的任務(wù),Lo
11、g4j專用于為程序輸入調(diào)試信息 下載地址為:http:/log4j.jayefem.de/index.php/Main_Page (4) Lomboz:Ecilpse的一個J2EE的插件,可以將很多java應(yīng)用服務(wù)器,J2EE組件和 web應(yīng)用開發(fā)集成到Eclipse中,可以幫助Java開發(fā)者使用Eclipse建立,測試和 部署J2ee應(yīng)用。支持jsp編寫,包括語法著色和語法檢查: 下載地址為:http:/f
12、/projects/lomboz (5) MyEclipse:J2EE開發(fā)插件,支持jsp,EJB,數(shù)據(jù)庫操作; 下載地址為: (6) TomcatPlugin:支持Tomcat插件; 下載地址為: (7) 語音包:下載地址為:/eclipse/downloads第二章程序的概括設(shè)計畫出流程圖 開 始 initstart()run()結(jié) 束否是stop()paint()CPU休息1秒否是流程圖:第三章 詳細(xì)設(shè)計設(shè)計結(jié)構(gòu)框圖。l 構(gòu)造
13、數(shù)據(jù)結(jié)構(gòu):根據(jù)程序結(jié)構(gòu)框圖和題目分析結(jié)果(采用算法),構(gòu)造程序所用各項數(shù)據(jù),各種窗體及他們之間的聯(lián)系。l 構(gòu)造程序框架:在窗體確定之后,根據(jù)算法設(shè)計出所用各個窗體之間的調(diào)用關(guān)系。l 程序設(shè)計:畫出程序功能框圖和結(jié)構(gòu)框圖;根據(jù)框圖設(shè)計程序;編譯程序調(diào)試程序,使程序可以使用;完備程序功能。l 程序打包:所設(shè)計程序匯總,將程序分類歸入相應(yīng)子目錄,完成程序所有設(shè)計要求。結(jié)論經(jīng)過一系列的Java程序代碼的設(shè)計,雖然過程中遇到了許多的問題,但是最終解決了所有的問題,準(zhǔn)確的設(shè)計出了時鐘動畫,運行情況正常。類的關(guān)系: “public class AnimatorDemo”是公共類,且是程序中的唯一的一個類。構(gòu)
14、造方法、成員變量和成員方法的功能說明: “Thread timer”用于顯示時鐘的線程; “SimpleDateFormat formatter”用于格式化時間顯示; “String lastdate”用于保存當(dāng)前時間的字符串; “Font clockFaceFont”用于設(shè)置顯示時鐘里面的數(shù)字的字體; “Date currentDate”用于顯示當(dāng)前時間; “Color handColor”用于顯示時針、分針和表盤的顏色; “Color numberColor” 用于顯示秒針和數(shù)字的顏色; “public void init()”用于設(shè)計時鐘格式并捕捉異常; “public void plo
15、tpoints(int x0, int y0, int x, int y, Graphics g)” 用于計算四分之一的圓弧; “public void circle(int x0, int y0, int r, Graphics g”) 用Bresenham算法來畫圓,其中(x0,y0)是圓的中心,r為圓半徑; “public void paint(Graphics g)”用于運行時鐘程序; “public void start()” applet的啟動方法; “public void stop()” applet的停止方法; “public void run()” 線程的run方法。附錄全
16、部程序代碼import java.awt.*; import java.awt.geom.Ellipse2D; import java.awt.geom.GeneralPath; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.util.Calendar; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JFrame; impor
17、t javax.swing.UIManager; public class Clock extends JComponent private static final Color INTEGRAL_COLOR = new Color(0, 128, 128); private int radius; private Calendar currentTime = Calendar.getInstance(); private double s = 0.03; public Clock(int radius) this.radius = radius; public void setCurrent
18、Time(Date time) /設(shè)置當(dāng)前時間 this.currentTime.setTime(time); public void setCurrentTime(long millis) this.currentTime.setTimeInMillis(millis); public Dimension getPreferredSize() Insets insets = getInsets(); int r = (int) (radius = -1 ? 0 : radius*(1+s)+1; return new Dimension(r * 2 + insets.left + inset
19、s.right,r * 2 + insets.top + insets.bottom); /返回一個指定寬、高的Dimension protected void paintComponent(Graphics g) super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Insets insets = getInsets(); int wid = getWi
20、dth() - insets.left - insets.right; int hei = getHeight() - insets.top - insets.bottom; int r = (int) (Math.min(wid, hei) / 2 / (1+s); g2d.translate(insets.left + r * (1+s), insets.top + r * (1+s); g2d.scale(1, -1); for (int i = 0; i < 60; i+) int angle = 90 - i * 6; double pos = calcPos(r, angle
21、); paintMinuteDot(r, g2d, pos0, pos1, i % 5 = 0); paintHourPointer(r, g2d); paintMinutePointer(r, g2d); paintSecondPointer(r, g2d); paintCenterPoint(g2d); g2d.scale(1, -1); g2d.translate(-insets.left - r * (1+s), -insets.top - r * (1+s); private void paintCenterPoint(Graphics2D g2d) g2d.setColor(Col
22、or.BLUE); Rectangle2D rect = new Rectangle2D.Double(-2, -2, 4, 4); g2d.fill(rect); private void paintMinutePointer(int r, Graphics2D g2d) int minute = currentTime.get(Calendar.MINUTE); int second = currentTime.get(Calendar.SECOND); double angle = 90 - (minute + second / 60.0) * 6; Shape pointerShape
23、 = createPointerShape(r * 0.8, r * 0.04, r * 0.08, angle); g2d.setColor(Color.LIGHT_GRAY); g2d.fill(pointerShape); g2d.setColor(Color.DARK_GRAY); g2d.draw(pointerShape); private void paintHourPointer(int r, Graphics2D g2d) int hour = currentTime.get(Calendar.HOUR); int minute = currentTime.get(Calen
24、dar.MINUTE); int second = currentTime.get(Calendar.SECOND); double angle = 90 - (hour + minute / 60.0 + second / 3600.0) * 30; Shape pointerShape = createPointerShape(r * 0.6, r * 0.06, r * 0.1, angle); g2d.setColor(Color.LIGHT_GRAY); g2d.fill(pointerShape); g2d.setColor(Color.DARK_GRAY); g2d.draw(p
25、ointerShape); private Shape createPointerShape(double r1, double r2, double r3, double angle) GeneralPath gp = new GeneralPath(); double pos = calcPos(r1, angle); double pos1 = calcPos(r2, angle + 90); gp.append(new Line2D.Double(pos0, pos1, pos10, pos11), true); double pos2 = calcPos(r3, angle + 18
26、0); gp.lineTo(float)pos20, (float)pos21); double pos3 = calcPos(r2, angle + 270); gp.lineTo(float)pos30, (float)pos31); gp.closePath(); return gp; private void paintSecondPointer(int r, Graphics2D g2d) g2d.setColor(Color.BLACK); int second = currentTime.get(Calendar.SECOND); int angle = 90 - second
27、* 6; double pos = calcPos(r * 0.9, angle); double pos1 = calcPos(r * 0.2, angle + 180); Line2D line = new Line2D.Double(pos10, pos11, pos0, pos1); g2d.draw(line); private void paintMinuteDot(int r, Graphics2D g2d, double x, double y, boolean flag) g2d.setColor(flag ? Color.RED : Color.BLACK); if (flag) /Rectangle2D rect = new Rectangle2D.Double( Ellipse2D rect = new Ellipse2D.Double( x - r * s, y - r * s, r * s * 2, r * s * 2); g2d.fill(rect); else /Rectangle2D rect = new Rectangle2D.Double( Ellipse2D rect = new Ellipse2D.Double( x - r * 0.02,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工園區(qū)工業(yè)固廢填埋場項目實施方案(模板)
- 供水管網(wǎng)升級改造工程可行性研究報告(僅供參考)
- 初中生交通安全教育
- 唯美美術(shù)教育課件
- 行為規(guī)范教育主題班會
- 電子科技大學(xué)中山學(xué)院《新聞傳播學(xué)類專業(yè)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津天獅學(xué)院《獸醫(yī)病理解剖學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南華大學(xué)船山學(xué)院《互換性與測量基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 清遠(yuǎn)職業(yè)技術(shù)學(xué)院《主任級管理的藝術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶城市科技學(xué)院《園林工程(園林水景工程)》2023-2024學(xué)年第二學(xué)期期末試卷
- 體育館維修改造投標(biāo)方案(技術(shù)標(biāo))
- 土壤重金屬源調(diào)查分析投標(biāo)方案
- 重癥患者的容量管理
- 智慧中藥房整體解決方案
- 植筋錨固深度表
- 幼兒園家長會會議記錄三篇
- 樓頂瀝青澆灌施工方案
- 陪孩子走過小學(xué)六年P(guān)PT模板
- 水工建筑物外觀評分
- 向法院請求酌情輕判申請書
評論
0/150
提交評論