java實(shí)訓(xùn)報(bào)告總結(jié)范文
Java語(yǔ)言程序設(shè)計(jì)是大部分高校計(jì)算機(jī)專業(yè)的一門核心能力課,Java實(shí)訓(xùn)操作又是達(dá)成其教學(xué)效果的重要環(huán)節(jié)和有效手段。本文是小編為大家整理的java實(shí)訓(xùn)報(bào)告范文,僅供參考?,F(xiàn)在,一起來(lái)看看吧!
java實(shí)訓(xùn)報(bào)告范文一
一、實(shí)訓(xùn)目的
1.熟練掌握J(rèn)ava面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)知識(shí)。
2.熟練掌握J(rèn)ava中常用的Swing組件的使用方法。
3.熟練掌握J(rèn)ava程序中圖形用戶界面設(shè)計(jì)的方法。
4.熟練掌握使用JDBC操作數(shù)據(jù)庫(kù)的方法。
5.通過(guò)實(shí)訓(xùn),培養(yǎng)學(xué)生分析和解決實(shí)際問(wèn)題的能力,提高調(diào)試和分析應(yīng)用程序的能力,并為后續(xù)Java高級(jí)編程等專業(yè)課程的學(xué)習(xí)奠定良好的基礎(chǔ)。
二、課程設(shè)計(jì)報(bào)告內(nèi)容
2.1 實(shí)訓(xùn)內(nèi)容
本課程設(shè)計(jì)的題目是設(shè)計(jì)一個(gè)簡(jiǎn)化的圖書管理系統(tǒng)。該系統(tǒng)從圖書館管理人員的角度出發(fā),實(shí)現(xiàn)對(duì)圖書信息、讀者信息的瀏覽、添加、刪除和查詢,同時(shí)還可以對(duì)讀者借書、還書過(guò)程進(jìn)行操作和控制。設(shè)計(jì)內(nèi)容主要包括系統(tǒng)分析、數(shù)據(jù)庫(kù)、數(shù)據(jù)表的創(chuàng)建、系統(tǒng)各個(gè)窗體的布局及其編碼實(shí)現(xiàn)。
系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成的。該管理系統(tǒng)需要完成的基本功能主要有:
用戶管理:主要包括用戶的添加、修改和刪除。
讀者管理:主要包括讀者信息的瀏覽、添加、刪除和查詢。
圖書管理:主要包括圖書信息的瀏覽、添加、刪除和查詢。
借還書管理:主要包括借書、還書和續(xù)借。
2.2 實(shí)訓(xùn)設(shè)備或軟、硬件
硬件:PⅣ及以上性能的PC機(jī);
軟件:Windows 2000或Windows XP系統(tǒng);JDK工具;JCreator4.0環(huán)境
2.3 功能設(shè)計(jì)及思想
首先設(shè)計(jì)測(cè)試登錄窗口:Text.java
接下來(lái)設(shè)計(jì)LoginFrame.java(登錄窗口)、MainFrame(主窗體)
Addbookframe.java(圖書入庫(kù)窗口)、AddReaders.java(添加讀者窗口)、AddUserframe.java(添加用戶窗口)、Borrowframe.java(借書窗口)、Retumframe.java(還書窗口)、Queryframe.java(圖書查詢窗口)。
導(dǎo)入部分及實(shí)現(xiàn)的接口
三、結(jié)論
Java實(shí)訓(xùn)在不知不覺(jué)中就結(jié)束了,我感覺(jué)自己還有好多東西要學(xué),還有好多的東西不懂呢!這是我大學(xué)以來(lái)第3次實(shí)訓(xùn),每次實(shí)訓(xùn)我都感覺(jué)學(xué)到了好多東西!因?yàn)槭且惶斓酵淼牟婚g斷訓(xùn)練,所以記的會(huì)非常牢固。不像平時(shí)上課,每上兩次的理論課卻只有45分鐘的實(shí)際操作。在課上,有老師在前面演示我們都還能跟著做,可輪到我們獨(dú)立完成的時(shí)候,因?yàn)閷?shí)際操作的少,早就忘光了!我很感謝學(xué)校有實(shí)訓(xùn)這樣的安排,把我們這一學(xué)期學(xué)的東西系統(tǒng)的集中的進(jìn)行訓(xùn)練,對(duì)我們計(jì)算機(jī)水平的提高發(fā)揮著重要作用!還要感謝我們的侯老師,侯老師學(xué)識(shí)淵博,也很有耐心,即使老師講了很多遍的問(wèn)題,我們不會(huì),老師還是會(huì)走進(jìn)我們給我們耐心的指導(dǎo),還給我們講一些學(xué)習(xí)java的方法,讓我們知道自己在哪方面不足,需要加強(qiáng),也讓我們了解到哪些需要認(rèn)真的學(xué)習(xí),那些是重點(diǎn),不是沒(méi)有方向的亂學(xué)一通,什么也學(xué)不好!
經(jīng)過(guò)這次的實(shí)訓(xùn),我真真確確的感受到了這些開發(fā)工具能讓我們提高工作的效率,更直觀更便捷的切入主題。這次我們學(xué)習(xí)的是制作圖書信息管理系統(tǒng),由老師給我們指導(dǎo)。當(dāng)然,在學(xué)習(xí)的過(guò)程中并不是一帆風(fēng)順的,在這之中,因?yàn)橐僮鞯臇|西很多,有時(shí)錯(cuò)一步,后面的結(jié)果就無(wú)法顯示,而自己的耐心與細(xì)心又太差,根本檢查不出來(lái)是哪里出了錯(cuò)!這時(shí)候,侯老師都會(huì)耐心的過(guò)來(lái)幫助我,我很感謝侯老師也很感謝學(xué)校能安排這么優(yōu)秀的侯老師來(lái)教我們!只是,我們太頑皮,有很多東西老師講了我們也沒(méi)能記住,我想在此說(shuō)一句:老師,您辛苦了,下學(xué)期我們一定認(rèn)認(rèn)真真的好好學(xué)!
實(shí)訓(xùn)課是在學(xué)習(xí)與探索中度過(guò)的,短暫的15天實(shí)訓(xùn)是結(jié)束了,但其中讓我們學(xué)到了許多知識(shí),出現(xiàn)許多未知的為什么,如圖書管理數(shù)據(jù)庫(kù)的初步設(shè)置、JDBC和SQL Server服務(wù)器的連接、數(shù)據(jù)備份與還原的步驟,報(bào)表的設(shè)計(jì)與實(shí)現(xiàn)、如何設(shè)置數(shù)據(jù)源、通過(guò)ADO訪問(wèn)數(shù)據(jù)庫(kù)的方法、監(jiān)聽器、各種Java Swing組件的使用,綁定控件的屬性設(shè)置、如何實(shí)現(xiàn)Click事件、實(shí)現(xiàn)它的獲得方法、設(shè)置注冊(cè)焦點(diǎn)
監(jiān)聽器、獲取當(dāng)前日期、以及利用函數(shù)之間的相互轉(zhuǎn)換等等一系列的問(wèn)題,正是在老師和同學(xué)的共同努力之下,我才一步步把問(wèn)題解決了,最終完成了不可能完成的任務(wù)。
為期15天的實(shí)訓(xùn)課就這樣結(jié)束了,我發(fā)現(xiàn)我對(duì)java有了新的認(rèn)識(shí),以前只知道玩游戲、娛樂(lè)和簡(jiǎn)單的應(yīng)用。通過(guò)這次的實(shí)訓(xùn),我了解到,要真真正正的掌握這些開發(fā)工具還不是一件簡(jiǎn)單容易的事兒,但真正掌握后,它帶個(gè)我們的將是無(wú)窮的便捷與科技,我喜歡高端便捷的生活。我希望我能做計(jì)算機(jī)這個(gè)萬(wàn)能機(jī)器人的主人而不是奴隸,我會(huì)努力加油的!
通過(guò)實(shí)訓(xùn),我不僅鞏固了舊知識(shí),也學(xué)到了新的知識(shí),并且把所學(xué)的應(yīng)用到實(shí)際操作中,提高了我們的實(shí)際動(dòng)手能力和邏輯思維能力。也讓我們對(duì)軟件開發(fā)的流程有一定了解,并且對(duì)開發(fā)軟件有了一些初步的經(jīng)驗(yàn)。真正做到了學(xué)習(xí)與實(shí)際應(yīng)用相結(jié)合,真的很感謝老師為我們爭(zhēng)取的這次實(shí)訓(xùn)機(jī)會(huì),在這次實(shí)訓(xùn)期間我獲益匪淺。
最后,謝謝老師在實(shí)習(xí)過(guò)程給予的幫助!老師辛苦了!感謝學(xué)校,感謝老師給我的幫助,讓我的思想、技能又上了一個(gè)臺(tái)階!
四、結(jié)束語(yǔ)
《Java圖書管理系統(tǒng)項(xiàng)目》心得:
其實(shí)在學(xué)習(xí)圖書管理系統(tǒng)實(shí)訓(xùn)時(shí),我們就已經(jīng)開展了SQL的學(xué)習(xí),雖然它們之間存在不同,但是屬于同一種語(yǔ)言——計(jì)算機(jī)語(yǔ)言,但是實(shí)際上呢!它們的思想是不同的,JAVA只是一種面向?qū)ο笳Z(yǔ)言,而該項(xiàng)目實(shí)戰(zhàn)是教我們?nèi)绾沃谱饕粋€(gè)實(shí)用型的軟件,從實(shí)際出發(fā),一步一步的按照老師的規(guī)定進(jìn)行,按正規(guī)模式的方式制作軟件,從初期的項(xiàng)目分析,書寫可行性報(bào)告,到項(xiàng)目分工,最后開始書寫代碼,一天一天的寫編程日記,把每一天遇到或完成的事情記錄下來(lái),一步步設(shè)計(jì)完成自已的工作,想象自己是一個(gè)程序設(shè)計(jì)師,我主要完成界面及其代碼的設(shè)計(jì),而其中有很多東西是我們所不知道,正向所有編程人員一樣,我們是邊學(xué)邊作,而且書寫代碼的速度要很快,因?yàn)橐粋€(gè)項(xiàng)目不應(yīng)該在書寫代碼的方面浪費(fèi)時(shí)間,在這期間很訓(xùn)練人,因?yàn)槊刻鞂懘a時(shí),都寫的一身熱汗,著急呀!可是當(dāng)完成每天的任務(wù),而多完成時(shí)有很大的成就感了,這當(dāng)然是一個(gè)心里成就了,因?yàn)槲視簳r(shí)還沒(méi)有寫完這個(gè)程序了。說(shuō)真的,我寫完這個(gè)圖書信息管理系統(tǒng)時(shí),真的感覺(jué)很累了,不過(guò)又很輕松了,因?yàn)榻K于完成了,不過(guò)在看了其他同學(xué)設(shè)計(jì)的程序時(shí),心里也感到眾多不足,因?yàn)槲覀冊(cè)O(shè)計(jì)的程序,在判斷某些輸入資料時(shí),總是不嚴(yán)謹(jǐn),可能給日后用戶帶來(lái)很多不方便,而且在日后的維護(hù)工作會(huì)很大,這樣的程序,作為一個(gè)日后的程序員是不應(yīng)該出現(xiàn)的。
其中,對(duì)了SQL語(yǔ)言的使用是相當(dāng)?shù)闹匾?,因?yàn)闆](méi)有了SQL語(yǔ)言的支持,對(duì)數(shù)據(jù)庫(kù)表的操作,是根本無(wú)法實(shí)現(xiàn)的,對(duì)數(shù)據(jù)的增加、刪除、修改,都是一樣的。發(fā)現(xiàn)對(duì)于軟件來(lái)說(shuō),對(duì)數(shù)據(jù)庫(kù)的操作是至關(guān)重要的,因?yàn)橛泻芏嘬浖际沁@樣的,無(wú)論是什么都要對(duì)數(shù)據(jù)進(jìn)行操作,統(tǒng)計(jì)、分類、查詢、修改、刪除等,而正因?yàn)檫@樣,我在開始寫程序時(shí)的SQL基礎(chǔ)不好,所以出現(xiàn)在眾多難題,而翻書查尋便是經(jīng)常事情了,因?yàn)橹R(shí)用到時(shí)方恨少了,其實(shí)我感覺(jué)用JAVA設(shè)計(jì)圖形界面,是很費(fèi)勁的,嗯„„用它作手機(jī)游戲看起來(lái)還不錯(cuò),或者用它網(wǎng)絡(luò)B/S、都是很好的,因?yàn)樗褪菫榱司W(wǎng)絡(luò)而生的??偟膩?lái)說(shuō),對(duì)于開展這樣的實(shí)用型項(xiàng)目,我個(gè)人認(rèn)為是非常重要的,這種實(shí)訓(xùn)突破了以前我的思維模式和慣性作法,以前對(duì)于程序來(lái)說(shuō),一開始就制作從來(lái)也不計(jì)劃,如果遇到了與想象中的不一樣的難題,就把這部分刪除掉,最近制作出來(lái)的程序,往往是功能不完善、功能不明確,沒(méi)有具體的規(guī)劃和文檔,到最后讓別人很難理解,自已也是很難弄明白。沒(méi)有一個(gè)良好的程序設(shè)計(jì)思想,當(dāng)然了學(xué)習(xí)項(xiàng)目實(shí)戰(zhàn)后,丟掉了那樣壞毛病,建立了良好的設(shè)計(jì)思想和編程過(guò)程。有很多不理解現(xiàn)在變成了現(xiàn)在的理解感謝,因?yàn)橥恍┱_的思想,總是一開始不被人接受,而到最近時(shí)才會(huì)被理解認(rèn)同,我也這樣認(rèn)為了。
通過(guò)這次的訓(xùn)練,掌握運(yùn)用了java程序設(shè)計(jì)的一些思想,了解了Java面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)知識(shí),熟練掌握了Java中常用的Swing組件的使用方法以及Java程序中圖形用戶界面設(shè)計(jì)的方法、使用JDBC操作數(shù)據(jù)庫(kù)的方法。初步了解了如何將復(fù)雜的問(wèn)題層層分析成較小的子問(wèn)題,實(shí)現(xiàn)Java編程的實(shí)際操作,掌握如何運(yùn)用Java解決一些常見的編程問(wèn)題,并學(xué)會(huì)、掌握分析解決問(wèn)題的方法,并運(yùn)用Java的程序結(jié)合自己對(duì)Java程序的初步認(rèn)識(shí)與理解進(jìn)行對(duì)照,查找自己與Java程序設(shè)計(jì)的偏差與不足之處,培養(yǎng)自己Java的思維。
本次實(shí)訓(xùn)項(xiàng)目通過(guò)分析并實(shí)現(xiàn)了圖書管理系統(tǒng)。本系統(tǒng)的設(shè)計(jì)讓大家了解如何根據(jù)實(shí)際問(wèn)題,分析功能需求,將復(fù)雜的問(wèn)題分析成子問(wèn)題,達(dá)到模塊化設(shè)計(jì)系統(tǒng)功能的目標(biāo)。同時(shí),可以利用這種方法制作通訊錄管理、課程管理、工資管理、圖書管理等小型管理系統(tǒng),此外,此次實(shí)訓(xùn)培養(yǎng)了我們java 的思維能力,讓我們對(duì)java有了更深層次的學(xué)習(xí)與理解,通過(guò)兩周的實(shí)訓(xùn)可以去解決一些簡(jiǎn)單的編程問(wèn)題,并對(duì)其出現(xiàn)的錯(cuò)誤能以與改正和討論同時(shí),也對(duì)以前自己朦朧而不解的問(wèn)題有了很好的理解,也知道了一些貴重的資料為何要施加密碼,如銀行卡。對(duì)java的理論有了更深的理解,同時(shí)也可以運(yùn)用本次的實(shí)訓(xùn)設(shè)置一些簡(jiǎn)單的系統(tǒng),
總之,我們從這次的實(shí)訓(xùn)中受益匪淺,我對(duì)這次實(shí)訓(xùn)還是比較滿意的,它使我學(xué)到了很多東西、學(xué)到了更深刻的知識(shí),為我以后的學(xué)習(xí)做了引導(dǎo),點(diǎn)明了方向,我相信在不遠(yuǎn)的未來(lái)定會(huì)有屬于我們自己的一片美好天空!漫漫長(zhǎng)路任我行,我需踏實(shí)腳下的路,一步步的前行。用現(xiàn)在的付出和汗水去勾畫未來(lái)美好的明天。
最后,在侯老師的細(xì)心輔導(dǎo)下,我有了很大的進(jìn)步,知識(shí)得到了擴(kuò)充,認(rèn)識(shí)得到了加深,也使得我的自學(xué)能力得到了很大的提高,在此,我向侯老師表示由衷地感謝。
老師您辛苦了!
java實(shí)訓(xùn)報(bào)告范文二
一、 課程設(shè)計(jì)名稱及主要內(nèi)容:
1、 課程設(shè)計(jì)名稱:
時(shí)鐘動(dòng)畫
2、 課程設(shè)計(jì)的主要內(nèi)容:
以下題目任選一個(gè):
(1)圖形界面類,如科學(xué)計(jì)算器、繪圖板、日歷、游戲程序等。
(2)動(dòng)畫類,編制功能較復(fù)雜、效果較好的Applet動(dòng)畫程序。
(3)數(shù)據(jù)處理類,如學(xué)生學(xué)籍、課程成績(jī)、圖書編目、倉(cāng)庫(kù)貨物等數(shù)據(jù)錄入查詢程序。
(4)其他類型,自選題目,須經(jīng)指導(dǎo)老師同意。
我所選的題目是動(dòng)畫類的Applet動(dòng)畫程序,主要任務(wù)是用Java程序設(shè)計(jì)一個(gè)時(shí)鐘動(dòng)畫。
二、 程序的設(shè)計(jì)思想和流程圖:
1、 設(shè)計(jì)思想:
現(xiàn)在的各種時(shí)鐘花樣百出,千奇百怪,功能亦是越來(lái)越先進(jìn)了。我很喜歡這些各式各樣的時(shí)鐘,所以希望自己也能設(shè)計(jì)出一個(gè)來(lái)。于是,我希望自己能夠用自己所學(xué)的Java知識(shí)設(shè)計(jì)出一個(gè)自己的時(shí)鐘動(dòng)畫,即使是最簡(jiǎn)單的,但我相信這是暫時(shí)的。只要我能夠努力學(xué)好Java知識(shí),將來(lái)一定能夠設(shè)計(jì)出更好更完美的時(shí)鐘動(dòng)畫。
2、 流程圖:
三、 程序介紹:
1、設(shè)計(jì)方法及步驟 :
題目分析:
根據(jù)《課程設(shè)計(jì)任務(wù)書》要求,分析題目,構(gòu)造出程序的基本思路(算法設(shè)計(jì))。畫出程序
設(shè)計(jì)結(jié)構(gòu)框圖。
構(gòu)造數(shù)據(jù)結(jié)構(gòu):
根據(jù)程序結(jié)構(gòu)框圖和題目分析結(jié)果(采用算法),構(gòu)造程序所用各項(xiàng)數(shù)據(jù),各種窗體及他們
之間的聯(lián)系。
構(gòu)造程序框架:
在窗體確定之后,根據(jù)算法設(shè)計(jì)出所用各個(gè)窗體之間的調(diào)用關(guān)系。
程序設(shè)計(jì):
?、佼嫵龀绦蚬δ芸驁D和結(jié)構(gòu)框圖;
②根據(jù)框圖設(shè)計(jì)程序;
?、劬幾g程序調(diào)試程序,使程序可以使用;
?、芡陚涑绦蚬δ堋?/p>
程序打包:
所設(shè)計(jì)程序匯總,將程序分類歸入相應(yīng)子目錄,完成程序所有設(shè)計(jì)要求。
2、完成情況:
經(jīng)過(guò)一系列的Java程序代碼的設(shè)計(jì),雖然過(guò)程中遇到了許多的問(wèn)題,但是最終解決了所有的問(wèn)題,準(zhǔn)確的設(shè)計(jì)出了時(shí)鐘動(dòng)畫,運(yùn)行情況正常。
3、類的關(guān)系:
“public class AnimatorDemo”是公共類,且是程序中的唯一的一個(gè)類。
4、構(gòu)造方法、成員變量和成員方法的功能說(shuō)明:
“Thread timer”用于顯示時(shí)鐘的線程;
“SimpleDateFormat formatter”用于格式化時(shí)間顯示; “String lastdate”用于保存當(dāng)前時(shí)間的字符串;
“Font clockFaceFont”用于設(shè)置顯示時(shí)鐘里面的數(shù)字的字體; “Date currentDate”用于顯示當(dāng)前時(shí)間;
“Color handColor”用于顯示時(shí)針、分針和表盤的顏色; “Color numberColor” 用于顯示秒針和數(shù)字的顏色; “public void init()”用于設(shè)計(jì)時(shí)鐘格式并捕捉異常;
“public void plotpoints(int x0, int y0, int x, int y, Graphics g)” 用于計(jì)算四分之一的圓弧;
“public void circle(int x0, int y0, int r, Graphics g”) 用Bresenham算法來(lái)畫圓,其中(x0,y0)是圓的中心,r為圓半徑; “public void paint(Graphics g)”用于運(yùn)行時(shí)鐘程序; “public void start()” applet的啟動(dòng)方法;
“public void stop()” applet的停止方法;
“public void run()” 線程的run方法。
四、 遇到的問(wèn)題和解決方法:
1、 問(wèn)題:
寫程序的時(shí)候,由于對(duì)有些Java知識(shí)不懂,所以有些想要表達(dá)的意思無(wú)法用Java代碼準(zhǔn)確的表達(dá)出來(lái),老是出錯(cuò)或者無(wú)法寫下去;
一開始,自己準(zhǔn)備的參考資料不足,無(wú)法在遇到問(wèn)題時(shí)有效的利用參考資料解決,遇到不懂的問(wèn)題和不會(huì)用程序語(yǔ)言表達(dá)的問(wèn)題時(shí),只能留在那里,無(wú)法解決,結(jié)果問(wèn)題最后越積越多,導(dǎo)致我無(wú)法再把程序?qū)懴氯?
一開始,對(duì)于老師布置的作業(yè)題目,我不太懂,無(wú)法進(jìn)行有效而且清晰的分析,自然也無(wú)法繼續(xù)下去寫程序了,耽誤了較多的時(shí)間;
對(duì)于要寫流程圖,一開始我并不懂是什么意思,也不知道怎么去寫。
2、 解決方法:
對(duì)于那些不懂的Java知識(shí)和不會(huì)寫的程序,我通過(guò)向同學(xué)尋求幫助和利用參考資料書,最終都解決了;
對(duì)于自己參考資料不足的缺點(diǎn),我在下課后,去了圖書館借閱有關(guān)方面的Java參考資料書,并且向同學(xué)借閱了他們所擁有的資料書,然后又利用自己的電腦上網(wǎng)查找了一些有關(guān)方面的參考知識(shí),終于在最后解決了資料不足的缺點(diǎn);
對(duì)于不懂的題目,我也通過(guò)向多個(gè)同學(xué)進(jìn)行詢問(wèn),最終弄懂了老師布置的題目所要求的內(nèi)容;
至于流程圖,在我向同學(xué)詢問(wèn)過(guò),并且上網(wǎng)進(jìn)行了一番查找和咨詢后,也總算弄懂了流程圖的含義,并努力寫了出來(lái)。
五、 認(rèn)識(shí)、感想、建議:
六、 參考資料:
《精通Java——JDK、數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)、Web開發(fā)》
《Java進(jìn)階教程》
《零起點(diǎn)Java應(yīng)用編程》
《Java程序設(shè)計(jì)應(yīng)用基礎(chǔ)教程》
七、 附加源程序:
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
public class AnimatorDemo extends Applet implements Runnable
{
Thread timer; // 用于顯示時(shí)鐘的線程
int lastxs, lastys, lastxm,
lastym, lastxh, lastyh;
SimpleDateFormat formatter; //格式化時(shí)間顯示
String lastdate; // 保存當(dāng)前時(shí)間的字符串
Font clockFaceFont; //設(shè)置顯示時(shí)鐘里面的數(shù)字的字體
Date currentDate; // 顯示當(dāng)前時(shí)間
Color handColor; // 用于顯示時(shí)針、分針和表盤的顏色
Color numberColor; // 用于顯示秒針和數(shù)字的顏色
public void init()
{
int x,y;
lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
formatter = new SimpleDateFormat ("yyyy EEE MMM dd hh:mm:ss ");
currentDate = new Date();
lastdate = formatter.format(currentDate);
clockFaceFont = new Font("Serif", Font.PLAIN, 14);
handColor = Color.blue;
numberColor = Color.darkGray;
try {
setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));}
catch (Exception E) { }
try {
handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));}
catch (Exception E) { }
try {
numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));} catch (Exception E) { } resize(300,300); // 設(shè)置時(shí)鐘窗口大小}
// 計(jì)算四分之一的圓弧
public void plotpoints(int x0, int y0, int x, int y, Graphics g)
{
g.drawLine(x0+x,y0+y,x0+x,y0+y);
g.drawLine(x0+y,y0+x,x0+y,y0+x);
g.drawLine(x0+y,y0-x,x0+y,y0-x);
g.drawLine(x0+x,y0-y,x0+x,y0-y);
g.drawLine(x0-x,y0-y,x0-x,y0-y);
g.drawLine(x0-y,y0-x,x0-y,y0-x);
g.drawLine(x0-y,y0+x,x0-y,y0+x);
g.drawLine(x0-x,y0+y,x0-x,y0+y);}
// 用Bresenham算法來(lái)畫圓,其中(x0,y0)是圓的中心,r為圓半徑
public void circle(int x0, int y0, int r, Graphics g)
{
int x,y;
float d;
x=0;
y=r;
d=5/4-r;
plotpoints(x0,y0,x,y,g);
while(y>x){
if (d<0) {
d=d+2*x+3;
x++;}
else {
d=d+2*(x-y)+5;
x++;
y--;}
plotpoints(x0,y0,x,y,g);}}
public void paint(Graphics g)
{int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter; String today;
currentDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault()); try {
s = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
s = 0;}
formatter.applyPattern("m");
try {
m = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
m = 10;}
formatter.applyPattern("h");
try {
h = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
h = 10;}
formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
today = formatter.format(currentDate);
//設(shè)置時(shí)鐘的表盤的中心點(diǎn)為(80,55)
xcenter=80;
ycenter=55;
// a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)
// x = r(cos a) + xcenter, y = r(sin a) + ycenter
xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);
ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);
xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);
ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);
xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter); yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter); //畫時(shí)鐘最外面的圓盤其中心在(xcenter,ycenter)半徑為50
g.setFont(clockFaceFont);
g.setColor(handColor);
circle(xcenter,ycenter,50,g);
//畫時(shí)鐘表盤里的數(shù)字
g.setColor(numberColor);
g.drawString("9",xcenter-45,ycenter+3);
g.drawString("3",xcenter+40,ycenter+3);
g.drawString("12",xcenter-5,ycenter-37);
g.drawString("6",xcenter-3,ycenter+45);
// 如果必要的話抹去然后重畫
g.setColor(getBackground());
if (xs != lastxs || ys != lastys) {
g.drawLine(xcenter, ycenter, lastxs, lastys);
g.drawString(lastdate, 5, 125);}
if (xm != lastxm || ym != lastym) {
g.drawLine(xcenter, ycenter-1, lastxm, lastym);
g.drawLine(xcenter-1, ycenter, lastxm, lastym); }
if (xh != lastxh || yh != lastyh) {
g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }
g.setColor(numberColor);
g.drawString("", 5, 125);
g.drawString(today, 5, 125);
g.drawLine(xcenter, ycenter, xs, ys);
g.setColor(handColor);
g.drawLine(xcenter, ycenter-1, xm, ym);
g.drawLine(xcenter-1, ycenter, xm, ym);
g.drawLine(xcenter, ycenter-1, xh, yh);
g.drawLine(xcenter-1, ycenter, xh, yh);
lastxs=xs; lastys=ys;
lastxm=xm; lastym=ym;
lastxh=xh; lastyh=yh;
lastdate = today;
currentDate=null;
}//applet的啟動(dòng)方法
public void start()
{timer = new Thread(this);
timer.start();
}// applet的停止方法
public void stop()
{timer = null;
}//線程的run方法
public void run()
{Thread me = Thread.currentThread();
while (timer == me) {
try {Thread.currentThread().sleep(1000);}
catch (InterruptedException e) {}
repaint();}
}//注意:這里重寫了update()方法,只是調(diào)用了paint()方法來(lái)消除閃爍現(xiàn)象 public void update(Graphics g)
{paint(g);}
}
java相關(guān)文章:
1.java工程師項(xiàng)目經(jīng)驗(yàn)簡(jiǎn)歷范文3篇