版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 電子與信息工程學(xué)院</b></p><p> Java課程設(shè)計(jì)報(bào)告</p><p> ( 2012——2013年度第一學(xué)期)</p><p> 課程名稱: Java課程設(shè)計(jì) </p><p> 題 目: Java時(shí)鐘 </p><
2、;p> 院 系: 計(jì)算機(jī)科學(xué)系 </p><p> 班 級(jí): 10軟件工程本(2)班 </p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p&g
3、t; 指導(dǎo)教師: </p><p> 2012 年 12月 20日</p><p><b> 摘 要</b></p><p> 隨著經(jīng)濟(jì)全球化的發(fā)展,推動(dòng)生活節(jié)奏的加快,也給時(shí)間賦予了更重要的意義?;诜奖闳藗兏玫恼莆諘r(shí)間,我們小組設(shè)計(jì)出了這個(gè)小時(shí)鐘。</p><p>
4、本時(shí)鐘是一個(gè)基于Java語(yǔ)言設(shè)計(jì)而成的一個(gè)小程序,目的是顯示時(shí)間,并且能調(diào)準(zhǔn)時(shí)鐘。整個(gè)程序從符合操作簡(jiǎn)便、界面友好、靈活使用的要求出發(fā),完成調(diào)用、調(diào)整的全過(guò)程。</p><p> 本課程設(shè)計(jì)報(bào)告介紹了時(shí)鐘的構(gòu)成,論述了目標(biāo)功能模塊;給出了時(shí)鐘設(shè)計(jì)的步驟,程序主要所用到的Swing組件以及graphics方法。</p><p> 一、課程設(shè)計(jì)的目的與要求</p><
5、p><b> ?。?、 課程設(shè)計(jì)目的</b></p><p> 《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)相關(guān)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實(shí)踐性、應(yīng)用性很強(qiáng)。實(shí)踐教學(xué)環(huán)節(jié)是必不可少的一個(gè)重要環(huán)節(jié)。本課程的程序設(shè)計(jì)專題實(shí)際是計(jì)算機(jī)相關(guān)專業(yè)學(xué)生學(xué)習(xí)完《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》課程后,進(jìn)行的一次全面的綜合訓(xùn)練,Java程序設(shè)計(jì)的設(shè)計(jì)目的是加深對(duì)理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌
6、握程序設(shè)計(jì)及其在網(wǎng)絡(luò)開(kāi)發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運(yùn)用所學(xué)知識(shí),利用軟件工程為基礎(chǔ)進(jìn)行軟件開(kāi)發(fā)、并在實(shí)踐應(yīng)用方面打下一定基礎(chǔ)。</p><p> ?。病?課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境</p><p> 硬件要求能運(yùn)行Windows操作系統(tǒng)的微機(jī)系統(tǒng)。Java程序設(shè)計(jì)語(yǔ)言及相應(yīng)的集成開(kāi)發(fā)環(huán)境,JDK和ECLIPSE開(kāi)發(fā)工具。</p><p> ?。?、 課程設(shè)計(jì)的
7、預(yù)備知識(shí)</p><p> 熟悉Java語(yǔ)言及ECLIPSE開(kāi)發(fā)工具。</p><p><b> ?。?、 課程設(shè)計(jì)要求</b></p><p> 按課程設(shè)計(jì)指導(dǎo)書提供的課題,要求學(xué)生在自行完成各個(gè)操作環(huán)節(jié),并能實(shí)現(xiàn)且達(dá)到舉一反三的目的,完成一個(gè)項(xiàng)目解決一類問(wèn)題。要求學(xué)生能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計(jì)和解答類似問(wèn)題
8、;對(duì)此能夠較好地理解和掌握,能夠進(jìn)行簡(jiǎn)單分析和判斷;能編寫出具有良好風(fēng)格的程序;掌握J(rèn)ava程序設(shè)計(jì)的基本技能和面向?qū)ο蟮母拍詈头椒?;了解多線程、數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)等編程技術(shù)。同時(shí)培養(yǎng)學(xué)生進(jìn)行分析問(wèn)題、解決問(wèn)題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計(jì)分析、設(shè)計(jì)方法、設(shè)計(jì)操作與測(cè)試、設(shè)計(jì)過(guò)程的觀察、理解和歸納能力的提高。</p><p><b> 二、需求分析</b></p><p>
9、1、軟件需求分析的要求</p><p> 具備把系統(tǒng)的硬件和軟件部分應(yīng)用于用戶環(huán)境的能力;</p><p> 具備良好的書面和口頭形式進(jìn)行討論和交換意見(jiàn)的能力;</p><p> 具有“既能看到樹木,又能看到森林”的能力。</p><p> 軟件需求分析是軟件生存期的一個(gè)重要階段,是軟件開(kāi)發(fā)項(xiàng)目得以成功的基礎(chǔ)。其最根本的任務(wù)是確定為了
10、滿足用戶的需要軟件系統(tǒng)必須做什么。</p><p> 軟件需求分析是一個(gè)不斷發(fā)現(xiàn)和決定的過(guò)程,在此過(guò)程中,軟件開(kāi)發(fā)者和軟件申請(qǐng)者(用戶)同樣起著重要的作用。</p><p> 在需求分析與說(shuō)明過(guò)程中,需要大量交換意見(jiàn),其間充滿著傳錯(cuò)信息和發(fā)生誤解的可能性。</p><p> 2、軟件需求分析實(shí)現(xiàn)以下幾個(gè)目標(biāo):</p><p> 給出軟
11、件系統(tǒng)的數(shù)據(jù)流程圖與數(shù)據(jù)結(jié)構(gòu),構(gòu)造一個(gè)完全的系統(tǒng)邏輯模型。</p><p> 提出詳細(xì)的功能說(shuō)明確定設(shè)計(jì)限定條件,規(guī)定性能要求。</p><p> 3、用戶對(duì)多功能時(shí)鐘的期望</p><p> 多功能時(shí)鐘系統(tǒng)的要求主要有以下幾個(gè)方面:</p><p> (1)、設(shè)計(jì)的系統(tǒng)能夠完成多功能時(shí)鐘系統(tǒng)的主要功能;</p><
12、;p> (2)、 設(shè)計(jì)的系統(tǒng)界面簡(jiǎn)潔、布局合理;</p><p> (3)、具有一定的穩(wěn)定性,安全性;</p><p> (4)、畫面簡(jiǎn)潔、易于觀看。</p><p> (5)、數(shù)字與指針功能相結(jié)合。</p><p><b> 三、概要設(shè)計(jì)</b></p><p><b>
13、; 1、時(shí)鐘設(shè)計(jì)流程圖</b></p><p><b> 2、程序功能設(shè)計(jì)</b></p><p> 本程序分為以下3個(gè)功能模塊。</p><p> (1)數(shù)字時(shí)鐘。數(shù)字時(shí)鐘模塊是以數(shù)字的形式把時(shí)間寫在窗口上,可以一目了然地看時(shí)間,是幾時(shí)幾分幾秒。</p><p> (2)指針時(shí)鐘。指針時(shí)鐘模塊是以
14、鐘表的形式顯示在窗口上,在上面也可以較為準(zhǔn)確地知道時(shí)間。</p><p> (3)時(shí)鐘窗口。時(shí)鐘窗口模塊是以綠色為時(shí)鐘的背景色,并且在窗口內(nèi)顯示年月份以及星期。</p><p><b> 3、程序功能設(shè)計(jì)</b></p><p> 本程序共設(shè)計(jì)了6個(gè)類,各類及功能說(shuō)明如下:</p><p> 1、clockPan
15、el /*控件*/</p><p> 2、myClock /*窗口*/</p><p> 3、panel3 /*數(shù)字時(shí)鐘*/</p><p> 4、myActionListener /*監(jiān)聽(tīng)*/</p><p> 5、ClockCenter /*指針時(shí)鐘中心*/<
16、;/p><p> 6、panel2 /*指針時(shí)鐘*/</p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p><b> 1、導(dǎo)入的包</b></p><p> import java.awt.BorderLayout;</p><p> i
17、mport java.awt.Color;</p><p> import java.awt.Container;</p><p> import java.awt.Dimension;</p><p> import java.awt.Font;</p><p> import java.awt.Graphics;</p>
18、;<p> import java.awt.Graphics2D;</p><p> import java.awt.Panel;</p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p
19、> import java.text.SimpleDateFormat;</p><p> import java.util.Date;</p><p> import java.util.GregorianCalendar;</p><p> import javax.swing.JFrame;</p><p> impor
20、t javax.swing.JLabel;</p><p> import javax.swing.Timer;</p><p><b> 2、時(shí)鐘窗口設(shè)計(jì)</b></p><p> public class myClock //myClock構(gòu)造方法</p><p><b> {
21、 </b></p><p> public static void main(String[] args) </p><p><b> { </b></p><p> JFrame frame = new JFrame("時(shí)鐘"); // 窗口標(biāo)題“時(shí)鐘”</p><p&
22、gt; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 點(diǎn)擊x結(jié)束程序 </p><p> Container contentPane = frame.getContentPane(); </p><p> // 得到窗口內(nèi)容面板 </p><p> contentPane.add(
23、new clockPanel()); </p><p> frame.pack(); </p><p> frame.setVisible(true); // 設(shè)置窗口可見(jiàn) </p><p><b> } </b></p><p><b> } </b></p>&
24、lt;p><b> 3、繪制數(shù)字時(shí)鐘</b></p><p> class panel3 extends Panel </p><p><b> { </b></p><p> private static final long serialVersionUID = 1L;</p><
25、p> Timer timer; </p><p> private int hour, min, sec; </p><p> JLabel label2; </p><p> @SuppressWarnings("deprecation")</p><p> public panel3() <
26、;/p><p><b> { </b></p><p> label2 = new JLabel(); </p><p> label2.setFont(new Font("SAN_SERIF", Font.BOLD, 25)); //設(shè)置字體大小</p><p> add(label2
27、); </p><p> timer = new Timer(1000, new myActionListener()); </p><p> timer.start(); </p><p> GregorianCalendar date = new GregorianCalendar(); </p><p> hour = d
28、ate.getTime().getHours(); </p><p> min = date.getTime().getMinutes(); </p><p> sec = date.getTime().getSeconds(); </p><p><b> } </b></p><p> public
29、void paint(Graphics g) </p><p><b> { </b></p><p> super.paint(g); </p><p> // 畫數(shù)字鐘 </p><p> label2.setText(String.format("%1$,02d", hou
30、r) + ":" </p><p> + String.format("%1$,02d", min) + ":" </p><p> + String.format("%1$,02d", sec)); </p><p><b> } </b></
31、p><p> public class myActionListener implements ActionListener </p><p><b> { </b></p><p> @SuppressWarnings("deprecation") </p><p> public voi
32、d actionPerformed(ActionEvent e) </p><p><b> { </b></p><p> if (e.getSource() == timer) </p><p><b> { </b></p><p> GregorianCalendar dat
33、e = new GregorianCalendar(); //獲取當(dāng)前時(shí)間</p><p> hour = date.getTime().getHours(); </p><p> min = date.getTime().getMinutes(); </p><p> sec = date.getTime().getSeconds();
34、</p><p> repaint(); </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></
35、p><p><b> 4、指針時(shí)鐘設(shè)計(jì)</b></p><p> class panel2 extends Panel </p><p><b> { </b></p><p> private static final long serialVersionUID = 1L;</p&g
36、t;<p> @SuppressWarnings("unused")</p><p> private int degree = 0; </p><p> final double pi = Math.PI; </p><p> final double R = 100; </p><p>
37、Timer timer; </p><p> private int hour, min, sec; </p><p> @SuppressWarnings("deprecation")</p><p> public panel2() </p><p><b> { </b><
38、/p><p> timer = new Timer(1000, new myActionListener()); </p><p> timer.start(); </p><p> GregorianCalendar date = new GregorianCalendar(); //獲取當(dāng)前時(shí)間</p><p> hour =
39、date.getTime().getHours(); </p><p> if (hour > 12) </p><p><b> { </b></p><p> hour = hour - 12; </p><p><b> } </b></p><p&
40、gt; min = date.getTime().getMinutes(); </p><p> sec = date.getTime().getSeconds(); </p><p><b> } </b></p><p> public void paint(Graphics g) </p><p&g
41、t;<b> { </b></p><p> super.paint(g); </p><p> Graphics2D g2d = (Graphics2D) g; </p><p> g2d.fillOval(ClockCenter.centerX - 1, ClockCenter.centerY - 1, 5, 5); <
42、;/p><p> for (int i = 6; i <= 360; i += 6) </p><p><b> { </b></p><p> if (i % 30 != 0) </p><p><b> { </b></p><p> g2d.setC
43、olor(Color.black); </p><p> g2d.fillOval((int) (ClockCenter.centerX + R </p><p> * Math.cos((double) i / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + R </p&g
44、t;<p> * Math.sin((double) i / 180 * pi - pi / 2)), 3, </p><p><b> 3); </b></p><p><b> } else </b></p><p><b> { </b></p>&l
45、t;p> if (i % 90 == 0) </p><p><b> { </b></p><p> g2d.setColor(Color.red); </p><p><b> } else </b></p><p><b> { </b><
46、/p><p> g2d.setColor(Color.black); </p><p><b> } </b></p><p> // g2d.setFont(new Font("SAN_SERIF",Font.BOLD,15)); </p><p><b> g2d <
47、/b></p><p> .drawString(String.valueOf(i / 30), </p><p> (int) (ClockCenter.centerX + R </p><p> * Math.cos((double) i / 180 * pi - pi </p><p> / 2)) - 3, &l
48、t;/p><p> (int) (ClockCenter.centerX + R </p><p> * Math.sin((double) i / 180 * pi - pi </p><p> / 2)) + 5); </p><p><b> } </b></p><p><
49、;b> } </b></p><p><b> // 畫指針 </b></p><p> g2d.setColor(Color.red); </p><p> g2d.drawLine(ClockCenter.centerX, ClockCenter.centerY, </p><p>
50、; (int) (ClockCenter.centerX + (R - 10) </p><p> * Math.cos((double) sec / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + (R - 10) </p><p> * Math.sin((double) se
51、c / 180 * pi - pi / 2))); </p><p> g2d.setColor(Color.blue); </p><p> g2d.drawLine(ClockCenter.centerX, ClockCenter.centerY, </p><p> (int) (ClockCenter.centerX + (R - 20) &l
52、t;/p><p> * Math.cos((double) min / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + (R - 20) </p><p> * Math.sin((double) min / 180 * pi - pi / 2))); </p><p
53、> g2d.setColor(Color.black); </p><p> g2d.drawLine(ClockCenter.centerX, ClockCenter.centerY, </p><p> (int) (ClockCenter.centerX + (R - 30) </p><p> * Math.cos((double) ho
54、ur / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + (R - 30) </p><p> * Math.sin((double) hour / 180 * pi - pi / 2))); </p><p><b> } </b></p>
55、<p> class myActionListener implements ActionListener //畫數(shù)字鐘</p><p><b> { </b></p><p> @SuppressWarnings("deprecation") </p><p> public void actio
56、nPerformed(ActionEvent e) </p><p><b> { </b></p><p> if (e.getSource() == timer) </p><p><b> { </b></p><p> GregorianCalendar date = new
57、 GregorianCalendar(); </p><p> hour = date.getTime().getHours(); </p><p> if (hour > 12) </p><p><b> { </b></p><p> hour = hour - 12; </p>
58、<p><b> } </b></p><p> hour = hour * 30; </p><p> min = date.getTime().getMinutes(); </p><p> min = min * 6; </p><p> sec = date.getTime().g
59、etSeconds(); </p><p> sec = sec * 6; </p><p> repaint(); </p><p><b> } </b></p><p><b> } </b></p><p><b> }</b&
60、gt;</p><p><b> }</b></p><p><b> 五、測(cè)試分析</b></p><p><b> 程序運(yùn)行界面如圖:</b></p><p> 1、顯示數(shù)字時(shí)鐘效果如圖:</p><p> 2、顯示指針時(shí)鐘效果如圖:<
61、;/p><p> ?。场r(shí)鐘完全效果如圖:</p><p> 六、程序設(shè)計(jì)心得體會(huì)</p><p> 本次Java課程設(shè)計(jì)我的題目是時(shí)鐘,題目不算難,但我做的很艱苦。主要就是動(dòng)手能力太差,理論知識(shí)掌握的不全面,自以為會(huì)不少,但真做起來(lái),卻不知道從哪下手了。又回去溫習(xí)理論知識(shí),請(qǐng)教老師,上網(wǎng)查資料,忙的不亦樂(lè)乎。不過(guò)經(jīng)過(guò)努力總算是做出來(lái)了,還通過(guò)此次課程設(shè)計(jì),將我本學(xué)
62、期所學(xué)的JAVA知識(shí)得到鞏固和應(yīng)用。在設(shè)計(jì)的過(guò)程中我遇到的很多問(wèn)題,在老師的幫助和自己的思考下還是很好的完成了。這此課程設(shè)計(jì)我懂得了寫程序不能脫離實(shí)際,只憑主觀辦事,要努力拓寬知識(shí)面,拓展思維。</p><p> 事情就是如此,努力代表收獲。通過(guò)這次課程設(shè)計(jì),我才真正領(lǐng)悟到“艱苦奮斗”這一詞的真正含義,我才感受到早期電子設(shè)計(jì)者為現(xiàn)代的社會(huì)付出。設(shè)計(jì)確實(shí)有些辛苦,但苦中也有樂(lè),在如今單一的理論學(xué)習(xí)中,很少有機(jī)會(huì)能
63、有實(shí)踐的機(jī)會(huì),但現(xiàn)在可以,這些天的設(shè)計(jì)中得到的東西卻不比理論課上得到的少多少,我感覺(jué)我和Java的距離更加近了;我想說(shuō),確實(shí)很累,但當(dāng)我看到自己所做的成果時(shí),心中也不免產(chǎn)生興奮; 學(xué)習(xí)有成果了么。</p><p> 對(duì)Java編程有了一個(gè)基本的了解。這些天溫習(xí)的內(nèi)容越多,敲得代碼越多,自己的學(xué)習(xí)積極性也越在提高,感覺(jué)也越充實(shí)。越來(lái)越發(fā)現(xiàn)現(xiàn)在學(xué)習(xí)的只是Java的基礎(chǔ),但涉及的面還是很廣泛的,這些都為以后進(jìn)一步學(xué)習(xí)
64、Java的高級(jí)特性打下了扎實(shí)的基礎(chǔ)。隨著課程難度的慢慢加強(qiáng),今后遇到的困難也必將會(huì)越來(lái)越多,但我相信自己一定能做好這些的。</p><p> 在本次Java課程設(shè)計(jì)中,我要非常感謝我的指導(dǎo)老師tian老師,不但在課堂上教給了我很多的Java的編程知tian,編程思想,而且在這次課程設(shè)計(jì)中更教會(huì)了我動(dòng)手的能力,真正的編出了自己的東西,還要感謝我的同學(xué),他們?cè)谖矣龅嚼щy時(shí)也給了我很多幫助。</p>&
65、lt;p><b> 七、源程序清單</b></p><p> import java.awt.BorderLayout;</p><p> import java.awt.Color;</p><p> import java.awt.Container;</p><p> import java.awt
66、.Dimension;</p><p> import java.awt.Font;</p><p> import java.awt.Graphics;</p><p> import java.awt.Graphics2D;</p><p> import java.awt.Panel;</p><p>
67、 import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import java.text.SimpleDateFormat;</p><p> import java.util.Date;</p><p>
68、import java.util.GregorianCalendar;</p><p> import javax.swing.JFrame;</p><p> import javax.swing.JLabel;</p><p> import javax.swing.Timer;</p><p> class clockPanel
69、 extends Panel </p><p><b> { </b></p><p> private static final long serialVersionUID = 1L;</p><p> Panel p1, p2, p3; </p><p> JLabel label1; </p&
70、gt;<p> int year, month, day, week; </p><p> public clockPanel() </p><p><b> { </b></p><p> setBackground(Color.green); //設(shè)置背景顏色為綠色</p><
71、p> setPreferredSize(new Dimension(250,320)); //設(shè)置控件大小</p><p> setLayout(new BorderLayout(10, 10)); //設(shè)置布局</p><p> p1 = new Panel(); </p><p> label1 = new JLabel(); &l
72、t;/p><p> SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日(EE)");//設(shè)置日期格式 </p><p> label1.setText(df.format(new Date())); </p><p> p1.add(label1); </p>&
73、lt;p> p2 = new panel2(); </p><p> p3 = new panel3(); </p><p> this.add(p1, BorderLayout.NORTH); </p><p> this.add(p2, BorderLayout.CENTER); </p><p> this
74、.add(p3, BorderLayout.SOUTH);</p><p><b> } </b></p><p><b> } </b></p><p> public class myClock //myClock構(gòu)造方法</p><p><b> {
75、 </b></p><p> public static void main(String[] args) </p><p><b> { </b></p><p> JFrame frame = new JFrame("時(shí)鐘"); // 窗口標(biāo)題“時(shí)鐘”</p><p&
76、gt; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 點(diǎn)擊x結(jié)束程序 </p><p> Container contentPane = frame.getContentPane(); </p><p> // 得到窗口內(nèi)容面板 </p><p> contentPane.add(
77、new clockPanel()); </p><p> frame.pack(); </p><p> frame.setVisible(true); // 設(shè)置窗口可見(jiàn) </p><p><b> } </b></p><p><b> } </b></p>&
78、lt;p> class panel3 extends Panel </p><p><b> { </b></p><p> private static final long serialVersionUID = 1L;</p><p> Timer timer; </p><p> privat
79、e int hour, min, sec; </p><p> JLabel label2; </p><p> @SuppressWarnings("deprecation")</p><p> public panel3() </p><p><b> { </b></p&g
80、t;<p> label2 = new JLabel(); </p><p> label2.setFont(new Font("SAN_SERIF", Font.BOLD, 25)); //設(shè)置字體大小</p><p> add(label2); </p><p> timer = new Timer(1000,
81、new myActionListener()); </p><p> timer.start(); </p><p> GregorianCalendar date = new GregorianCalendar(); </p><p> hour = date.getTime().getHours(); </p><p>
82、min = date.getTime().getMinutes(); </p><p> sec = date.getTime().getSeconds(); </p><p><b> } </b></p><p> public void paint(Graphics g) </p><p><b
83、> { </b></p><p> super.paint(g); </p><p> // 畫數(shù)字鐘 </p><p> label2.setText(String.format("%1$,02d", hour) + ":" </p><p> + Strin
84、g.format("%1$,02d", min) + ":" </p><p> + String.format("%1$,02d", sec)); </p><p><b> } </b></p><p> public class myActionListener im
85、plements ActionListener </p><p><b> { </b></p><p> @SuppressWarnings("deprecation") </p><p> public void actionPerformed(ActionEvent e) </p><
86、p><b> { </b></p><p> if (e.getSource() == timer) </p><p><b> { </b></p><p> GregorianCalendar date = new GregorianCalendar(); //獲取當(dāng)前時(shí)間</p>
87、;<p> hour = date.getTime().getHours(); </p><p> min = date.getTime().getMinutes(); </p><p> sec = date.getTime().getSeconds(); </p><p> repaint(); </p><
88、;p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p> class ClockCenter </p>&
89、lt;p><b> { </b></p><p> public static int centerX = 120;</p><p> public static int centerY = 120; </p><p><b> } </b></p><p> class pa
90、nel2 extends Panel </p><p><b> { </b></p><p> private static final long serialVersionUID = 1L;</p><p> @SuppressWarnings("unused")</p><p> p
91、rivate int degree = 0; </p><p> final double pi = Math.PI; </p><p> final double R = 100; </p><p> Timer timer; </p><p> private int hour, min, sec; </p>
92、<p> @SuppressWarnings("deprecation")</p><p> public panel2() </p><p><b> { </b></p><p> timer = new Timer(1000, new myActionListener()); </p&
93、gt;<p> timer.start(); </p><p> GregorianCalendar date = new GregorianCalendar(); //獲取當(dāng)前時(shí)間</p><p> hour = date.getTime().getHours(); </p><p> if (hour > 12) </p
94、><p><b> { </b></p><p> hour = hour - 12; </p><p><b> } </b></p><p> min = date.getTime().getMinutes(); </p><p> sec = dat
95、e.getTime().getSeconds(); </p><p><b> } </b></p><p> public void paint(Graphics g) </p><p><b> { </b></p><p> super.paint(g); </p&
96、gt;<p> Graphics2D g2d = (Graphics2D) g; </p><p> g2d.fillOval(ClockCenter.centerX - 1, ClockCenter.centerY - 1, 5, 5); </p><p> for (int i = 6; i <= 360; i += 6) </p><
97、;p><b> { </b></p><p> if (i % 30 != 0) </p><p><b> { </b></p><p> g2d.setColor(Color.black); </p><p> g2d.fillOval((int) (ClockCente
98、r.centerX + R </p><p> * Math.cos((double) i / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + R </p><p> * Math.sin((double) i / 180 * pi - pi / 2)), 3, </p>
99、;<p><b> 3); </b></p><p><b> } else </b></p><p><b> { </b></p><p> if (i % 90 == 0) </p><p><b> { </b>&
100、lt;/p><p> g2d.setColor(Color.red); </p><p><b> } else </b></p><p><b> { </b></p><p> g2d.setColor(Color.black); </p><p><b
101、> } </b></p><p> // g2d.setFont(new Font("SAN_SERIF",Font.BOLD,15)); </p><p><b> g2d </b></p><p> .drawString(String.valueOf(i / 30), </p&
102、gt;<p> (int) (ClockCenter.centerX + R </p><p> * Math.cos((double) i / 180 * pi - pi </p><p> / 2)) - 3, </p><p> (int) (ClockCenter.centerX + R </p><p>
103、; * Math.sin((double) i / 180 * pi - pi </p><p> / 2)) + 5); </p><p><b> } </b></p><p><b> } </b></p><p><b> // 畫指針 </b>&
104、lt;/p><p> g2d.setColor(Color.red); </p><p> g2d.drawLine(ClockCenter.centerX, ClockCenter.centerY, </p><p> (int) (ClockCenter.centerX + (R - 10) </p><p> * Math.c
105、os((double) sec / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.centerX + (R - 10) </p><p> * Math.sin((double) sec / 180 * pi - pi / 2))); </p><p> g2d.setColor(Color.blue
106、); </p><p> g2d.drawLine(ClockCenter.centerX, ClockCenter.centerY, </p><p> (int) (ClockCenter.centerX + (R - 20) </p><p> * Math.cos((double) min / 180 * pi - pi / 2)), <
107、/p><p> (int) (ClockCenter.centerX + (R - 20) </p><p> * Math.sin((double) min / 180 * pi - pi / 2))); </p><p> g2d.setColor(Color.black); </p><p> g2d.drawLine(Clo
108、ckCenter.centerX, ClockCenter.centerY, </p><p> (int) (ClockCenter.centerX + (R - 30) </p><p> * Math.cos((double) hour / 180 * pi - pi / 2)), </p><p> (int) (ClockCenter.cent
109、erX + (R - 30) </p><p> * Math.sin((double) hour / 180 * pi - pi / 2))); </p><p><b> } </b></p><p> class myActionListener implements ActionListener //畫數(shù)字鐘</
110、p><p><b> { </b></p><p> @SuppressWarnings("deprecation") </p><p> public void actionPerformed(ActionEvent e) </p><p><b> { </b>&
111、lt;/p><p> if (e.getSource() == timer) </p><p><b> { </b></p><p> GregorianCalendar date = new GregorianCalendar(); </p><p> hour = date.getTime().getHo
112、urs(); </p><p> if (hour > 12) </p><p><b> { </b></p><p> hour = hour - 12; </p><p><b> } </b></p><p> hour = hour * 3
113、0; </p><p> min = date.getTime().getMinutes(); </p><p> min = min * 6; </p><p> sec = date.getTime().getSeconds(); </p><p> sec = sec * 6; </p><p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)-時(shí)鐘圖形模擬
- plc時(shí)鐘課程設(shè)計(jì)---時(shí)鐘系統(tǒng)設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 時(shí)鐘課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- vb時(shí)鐘課程設(shè)計(jì)報(bào)告---模擬時(shí)鐘
- java課程設(shè)計(jì)--java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--數(shù)字時(shí)鐘
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 數(shù)字時(shí)鐘課程設(shè)計(jì)
- 電腦時(shí)鐘課程設(shè)計(jì)
- java課程設(shè)計(jì)---java程序設(shè)計(jì)
- java課程設(shè)計(jì)--java程序設(shè)計(jì)
- java課程設(shè)計(jì)--日歷
- java課程設(shè)計(jì)模板
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論