2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p><b>  目錄</b></p><p><b>  正文</b></p><p><b>  一.設(shè)計(jì)目的</b></p><p><b>  二.總體設(shè)計(jì)</b>

2、;</p><p><b>  三.關(guān)鍵技術(shù)</b></p><p><b>  四.程序流程</b></p><p><b>  五.主要源代碼</b></p><p>  六. 運(yùn)行結(jié)果及結(jié)論</p><p><b>  一:設(shè)計(jì)目的:&l

3、t;/b></p><p>  在掌握了基本的java編程之后,通過課程設(shè)計(jì)鞏固和提高java編程技術(shù),培養(yǎng)程序設(shè)計(jì)的基本思路和方法,加強(qiáng)研發(fā)與調(diào)試程序的能力,增強(qiáng)分析解決問題的能力,培養(yǎng)學(xué)習(xí)java的興趣以及以及提高論文寫作能力。</p><p>  設(shè)計(jì)GUI界面的日歷記事本,能查看具體時(shí)間(年月日以及時(shí)刻)以及作記錄。</p><p><b>

4、  二:總體設(shè)計(jì)</b></p><p>  在設(shè)計(jì)日歷記事本時(shí),需要編寫6個(gè)基本的Java源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CanlendarImage.java、Clock.java和CalendarMessage.java。此外還有Java系統(tǒng)提供的一些重要類,如JTextField、JTextArea和File類。日歷記

5、事本所用到的一些重要的類以及之間的組合關(guān)系如下所示:</p><p>  對(duì)6個(gè)基本的Java源文件簡(jiǎn)單介紹:</p><p>  (1)CalendarWindow是主類,該類含有main方法,程序從該類開始執(zhí)行,負(fù)責(zé)創(chuàng)建動(dòng)日歷記事本的主窗口,含有5個(gè)重要類型的對(duì)象:CalendarPad、NotePad、CanlendarImage、Clock和CalendarMessage對(duì)象。&l

6、t;/p><p> ?。?)CalendarMessage類所創(chuàng)建的對(duì)象刻畫與“日期”有關(guān)的數(shù)據(jù)。</p><p> ?。?)CalendarPad類所創(chuàng)建的對(duì)象用來表示“日歷”,負(fù)責(zé)顯示和修改CalendarMessage對(duì)象中的日期數(shù)據(jù)。</p><p>  (4)NotePad類創(chuàng)建的對(duì)象表示“記事本”,提供編輯、讀取、保存和刪除日志的功能。</p>

7、<p> ?。?)CalendarImage類創(chuàng)建的對(duì)象負(fù)責(zé)繪制圖像。</p><p> ?。?)Clock類創(chuàng)建的對(duì)象負(fù)責(zé)顯示時(shí)鐘。</p><p><b>  三、關(guān)鍵技術(shù)</b></p><p>  主要介紹基本類的數(shù)據(jù)與方法:</p><p>  1.CalendarWindow類</p>

8、<p><b>  1)成員變量</b></p><p> ?。?)year,mouth和day是int型數(shù)據(jù),分別表示年、月、日。</p><p> ?。?)calendarMessage是CalendarMessage對(duì)象,calendarPad是CalendarPad的對(duì)象,notePad是NotePad對(duì)象,calendarImage是Calen

9、darImage對(duì)象,clock是Clock對(duì)象</p><p> ?。?)showYear、showMouth和showDay是JtextField類創(chuàng)建的文本框,顯示年份,月份,日期。</p><p>  (4)nextYear,previousYear,nextMouth和previousMouth是Jbutton創(chuàng)建的按鈕對(duì)象,名字依次為“下年”、“上年”、“下月”和“上月”。這些

10、按鈕都將當(dāng)前窗口注冊(cè)為自己的ActionEvent事件監(jiān)視器。</p><p> ?。?)saveDailyRwcord,deleteDailyRecord和readDailyRecord是Jbutton創(chuàng)建的按鈕對(duì)象,名字為“保存日志”、“刪除日志”和“讀取日志”。這些按鈕都將當(dāng)前窗口注冊(cè)為自己的ActionEvent事件監(jiān)視器。</p><p><b>  2)方法</

11、b></p><p> ?。?)CalendarWindow()是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。</p><p> ?。?)ActionPerformed(ActionEvent)方法是CalendarWindow類實(shí)現(xiàn)</p><p>  ActionListener接口中的方法。CalendarWindow創(chuàng)建的窗口是nextYear,previousY

12、ear,nextMonth,previousMonth,saveDailyRwcord,deleteDailyRecord和readDailyRecord按鈕ActionEent事件監(jiān)視器,當(dāng)用戶單擊其中按鈕時(shí),窗口將執(zhí)行ActionPerformed(ActionEvent)方法進(jìn)行相應(yīng)的操作。</p><p> ?。?)mousePressed(MouseEvent)方法是CalendarWindow類實(shí)現(xiàn)的

13、MouseListener接口中的方法。CalendarWindow創(chuàng)建的窗口是showDay數(shù)組中的JtextField文本框的MouseEvent事件監(jiān)視器,當(dāng)用戶在某個(gè)顯示日期的文本框上按下鼠標(biāo)左鍵時(shí),窗口將執(zhí)行mousePressed(MouseEvent)方法進(jìn)行相應(yīng)的操作。</p><p> ?。?)focusGained(FocusEvent)和focusLost(FocusEvent)方法是Cal

14、endarWindow類實(shí)現(xiàn)的FocusListener接口中的方法。CalendarWindow創(chuàng)建的窗口是showDay 數(shù)組中 的JtextField文本框的FouseEvent事件監(jiān)視器,當(dāng)用戶的操作導(dǎo)致某個(gè)顯示*期的文本框的焦點(diǎn)發(fā)生變化時(shí),窗口將執(zhí)行focusGained(FocusEvent)和focusLost(FocusEvent)方法進(jìn)行相應(yīng)的操作。</p><p> ?。?)doMark方法

15、負(fù)責(zé)對(duì)有日志的日期作標(biāo)記。</p><p> ?。?)main方法是程序運(yùn)行的入口方法。</p><p>  2.CalendarMessage類</p><p><b>  1)成員變量</b></p><p>  year,mouth和day是int型數(shù)據(jù),分別表示年、月、日。</p><p>

16、;<b>  2)方法</b></p><p> ?。?)setYear(int)和getYear()方法分別用來設(shè)置year和獲取year的值。</p><p> ?。?)setMonth(int)和getMonth()方法分別用來設(shè)置month和獲取month的值。</p><p> ?。?)setDay(int)和getDay()方法分別

17、用來設(shè)置day和獲取day的值。</p><p>  (4)getMonthCalendar()方法按習(xí)慣來處理數(shù)據(jù),日歷牌中的每行的第一列為“星期日”。getMonthCalendar()方法根據(jù)year,month和day的值返回一個(gè)存放這“日歷”數(shù)據(jù)的String類型的數(shù)組。</p><p>  3.CalendarPad類</p><p><b>

18、  1)成員變量</b></p><p> ?。?)year,mouth和day是int型數(shù)據(jù),分別表示年、月、日。</p><p> ?。?)calendarMessage是CalendarMessage對(duì)象,處理與日期相關(guān)的數(shù)據(jù)。</p><p> ?。?)showDay數(shù)組的每個(gè)單元是JtextField類創(chuàng)建的用來顯示日期的文本框。</p&

19、gt;<p> ?。?)“星期”是String數(shù)組,單元的值依次為:“SUN日”、“MON一”、“TUE二”、“WED三”、“THU四”、“FRI五”、“SAT六”。</p><p><b>  2)方法</b></p><p>  (1)CalendarPad()是構(gòu)造方法,用來創(chuàng)造calendarPad對(duì)象。</p><p>

20、  (2)setShowDayTextField(JtextField[])方法負(fù)責(zé)設(shè)置showDay數(shù)組。</p><p> ?。?)setCalendarMessage(CalendarMessage)方法負(fù)責(zé)設(shè)置calendarMessage對(duì)象</p><p> ?。?)showMonthCalendar()方法負(fù)責(zé)顯示“日歷”。</p><p>  4.N

21、otePad類</p><p><b>  1)成員變量</b></p><p> ?。?)text是JtextArea創(chuàng)建的文本區(qū),可在text中編輯多行文本。</p><p> ?。?)showMessage是JtextField創(chuàng)建的文本條,用來顯示和日期有關(guān)的數(shù)據(jù)。</p><p> ?。?)menu是Jpopu

22、pMenu創(chuàng)建的彈出式菜單。</p><p> ?。?)itemCopy、itemCut、itemPaste和itemClear是JmenuItem創(chuàng)建的菜單項(xiàng),名字依次是“復(fù)制”、“剪切”、“粘貼”、和“清空”。</p><p><b>  2)方法</b></p><p> ?。?)NotePad()是構(gòu)造方法,用來創(chuàng)建notePad對(duì)象。

23、</p><p> ?。?)setShowMessage(int,int,int)方法根據(jù)參數(shù)指定的日期數(shù)據(jù)顯示有關(guān)日期信息。</p><p> ?。?)save(File,int,int,int)方法根據(jù)參數(shù)指定的日期保存日志。</p><p> ?。?)delete(file,int,int,int)方法刪除參數(shù)日期所指定日志。</p><p

24、> ?。?)read(Fild,int,int,int)方法讀取參數(shù)日期所指定日志。</p><p>  5.CalendarImage類</p><p><b>  1)成員變量</b></p><p> ?。?)imageFile是File對(duì)象,用來存放圖像文件的引用。</p><p>  (2)image是I

25、mage對(duì)象。</p><p> ?。?)tool是Toolkit對(duì)象,負(fù)責(zé)創(chuàng)建image對(duì)象。</p><p><b>  2)方法</b></p><p> ?。?)CalendarImage()是構(gòu)造方法,負(fù)責(zé)創(chuàng)建calendarImage對(duì)象。</p><p>  (2)setImageFile(File)方法負(fù)

26、責(zé)設(shè)置imageFile對(duì)象,并根據(jù)imageFile創(chuàng)建image</p><p> ?。?)paintComponent(Graphics)方法負(fù)責(zé)繪制image。</p><p><b>  6.clock類</b></p><p><b>  1)成員變量</b></p><p> ?。?)

27、date是Date對(duì)象,負(fù)責(zé)封裝本地時(shí)間。</p><p>  (2)secondTime是javax.swing包中Timer類創(chuàng)建的計(jì)時(shí)器。</p><p>  (3)hour,munite和secord是int型數(shù)據(jù),其值分別代表“小時(shí)”、“分鐘”和“秒”。</p><p> ?。?)secondLine,muniteLine和hourLine是Line2D對(duì)

28、象,分別負(fù)責(zé)繪制“時(shí)針”,“分針”和“秒針”。</p><p> ?。?)pointSX,pointSY是double型數(shù)組,其單元值用來表示秒針端點(diǎn)坐標(biāo)。</p><p> ?。?)pointSX,pointMY是double型數(shù)組,其單元值用來表示分針端點(diǎn)坐標(biāo)。</p><p>  (7)pointHX,pointHY是double型數(shù)組,其單元值用來表示時(shí)針端

29、點(diǎn)坐標(biāo)。</p><p><b>  2)方法</b></p><p>  (1)Clock()是構(gòu)造方法,用來創(chuàng)建clock對(duì)象。</p><p> ?。?)initPoint()負(fù)責(zé)創(chuàng)建表盤所需要的坐標(biāo)點(diǎn)。</p><p> ?。?)paintComponent(Graphics)負(fù)責(zé)完成繪制工作。</p>

30、;<p> ?。?)actionPerformed(ActionEvent)是ActionListener中的方法。使用Timer類的構(gòu)造方法:Timer(int a,Object b)創(chuàng)建一個(gè)計(jì)時(shí)器,其中的參數(shù)a 的單位是毫秒,規(guī)定計(jì)時(shí)器每隔a毫秒“振鈴”一次,參數(shù)b是計(jì)時(shí)器的監(jiān)視器。計(jì)時(shí)器發(fā)生的振鈴事件是ActionEvent類型事件,當(dāng)振鈴事件發(fā)生時(shí),監(jiān)視器就會(huì)監(jiān)視到這個(gè)事件,監(jiān)視器就回調(diào)用ActionListene

31、r接口中的actionPerformed(ActionEvent)方法,該方法所做的操作是:每隔1秒鐘,讓“秒針”前進(jìn)一個(gè)刻度(表盤一周為360°,每個(gè)刻度為6°),muniteLine改變端點(diǎn)坐標(biāo);每隔12分鐘,讓“時(shí)針”前進(jìn)一個(gè)刻度,即hourLine改變端點(diǎn)坐標(biāo)。</p><p><b>  7.所需圖像</b></p><p>  名字為f

32、lower.jpg的圖像文件,這是日歷記事本所使用的圖像。見下:</p><p><b>  四、程序流程</b></p><p><b>  五、主要源代碼</b></p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p

33、><p>  import java.awt.event.*;</p><p>  import java.util.*;</p><p>  import java.io.*;</p><p>  public class CalendarWindow extends JFrame implements ActionListener,</

34、p><p>  MouseListener,FocusListener{</p><p>  int year,month,day;</p><p>  CalendarMessage calendarMessage;</p><p>  CalendarPad calendarPad;</p><p>  NotePad

35、 notePad;</p><p>  JTextField showYear,showMonth;</p><p>  JTextField [] showDay;</p><p>  CalendarImage calendarImage;</p><p>  Clock clock; </p><p>  JBu

36、tton nextYear,previousYear,nextMonth,previousMonth;</p><p>  JButton saveDailyRecord,deleteDailyRecord,readDailyRecord,SoundRecord;</p><p><b>  File dir;</b></p><p>  Co

37、lor backColor=Color.pink; </p><p>  public CalendarWindow(){</p><p>  dir=new File("./dailyRecord");</p><p>  dir.mkdir(); </p><p>  showDay=new JTextField[

38、42];</p><p>  for(int i=0;i<showDay.length;i++){</p><p>  showDay[i]=new JTextField();</p><p>  showDay[i].setBackground(backColor);</p><p>  showDay[i].setLayout(ne

39、w GridLayout(3,3)); </p><p>  showDay[i].addMouseListener(this); </p><p>  showDay[i].addFocusListener(this);</p><p><b>  }</b></p><p>  calendarMessage=new

40、 CalendarMessage();</p><p>  calendarPad=new CalendarPad();</p><p>  notePad=new NotePad(); </p><p>  Calendar calendar=Calendar.getInstance(); </p><p>  calendar.setT

41、ime(new Date()); </p><p>  year=calendar.get(Calendar.YEAR);</p><p>  month=calendar.get(Calendar.MONTH)+1;</p><p>  day=calendar.get(Calendar.DAY_OF_MONTH);</p><p>  c

42、alendarMessage.setYear(year);</p><p>  calendarMessage.setMonth(month);</p><p>  calendarMessage.setDay(day);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p>&l

43、t;p>  calendarPad.setShowDayTextField(showDay);</p><p>  notePad.setShowMessage(year,month,day); </p><p>  calendarPad.showMonthCalendar();</p><p>  doMark(); //給有日志的號(hào)碼做標(biāo)記,見后面的d

44、oMark()方法</p><p>  calendarImage=new CalendarImage();</p><p>  calendarImage.setImageFile(new File("flower.jpg"));</p><p>  clock=new Clock();</p><p>  JSplit

45、Pane splitV1=</p><p>  new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);</p><p>  JSplitPane splitV2=</p><p>  new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,cl

46、ock); </p><p>  JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);</p><p>  add(splitH,BorderLayout.CENTER);</p><p>  showYear=new JTextField(""

47、;+year,6);</p><p>  showYear.setFont(new Font("TimesRoman",Font.BOLD,12));</p><p>  showYear.setHorizontalAlignment(JTextField.CENTER);</p><p>  showMonth=new JTextField(&

48、quot; "+month,4);</p><p>  showMonth.setFont(new Font("TimesRoman",Font.BOLD,12));</p><p>  showMonth.setHorizontalAlignment(JTextField.CENTER);</p><p>  nextYear=new

49、 JButton("下年");</p><p>  previousYear=new JButton("上年");</p><p>  nextMonth=new JButton("下月");</p><p>  previousMonth=new JButton("上月");</

50、p><p>  nextYear.addActionListener(this);</p><p>  previousYear.addActionListener(this);</p><p>  nextMonth.addActionListener(this);</p><p>  previousMonth.addActionListen

51、er(this);</p><p>  showYear.addActionListener(this);</p><p>  JPanel north=new JPanel(); </p><p>  north.add(previousYear); </p><p>  north.add(showYear);</p>&l

52、t;p>  north.add(nextYear);</p><p>  north.add(previousMonth);</p><p>  north.add(showMonth);</p><p>  north.add(nextMonth);</p><p>  add(north,BorderLayout.NORTH);&l

53、t;/p><p>  saveDailyRecord=new JButton("保存日志") ;</p><p>  deleteDailyRecord=new JButton("刪除日志");</p><p>  readDailyRecord=new JButton("讀取日志");</p>

54、<p>  SoundRecord=new JButton("音樂播放");</p><p>  saveDailyRecord.addActionListener(this);</p><p>  deleteDailyRecord.addActionListener(this);</p><p>  readDailyRecord.

55、addActionListener(this);</p><p>  SoundRecord.addActionListener(this);</p><p>  JPanel pSouth=new JPanel(); </p><p>  pSouth.add(saveDailyRecord);</p><p>  pSouth

56、.add(deleteDailyRecord);</p><p>  pSouth.add(readDailyRecord);</p><p>  pSouth.add(SoundRecord);</p><p>  add(pSouth,BorderLayout.SOUTH);</p><p>  setVisible(true);<

57、/p><p>  setBounds(60,60,660,480);</p><p>  validate();</p><p>  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); </p><p><b>  }</b></p><p>  publi

58、c void actionPerformed(ActionEvent e){</p><p>  if(e.getSource()==nextYear){</p><p><b>  year++;</b></p><p>  showYear.setText(""+year);</p><p>  

59、calendarMessage.setYear(year);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMonthCalendar();</p><p>  notePad.setShowMessage(year,month,day); &

60、lt;/p><p>  doMark(); </p><p><b>  }</b></p><p>  else if(e.getSource()==previousYear){</p><p><b>  year--;</b></p><p>  showYear.setT

61、ext(""+year);</p><p>  calendarMessage.setYear(year);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMonthCalendar();</p><p&

62、gt;  notePad.setShowMessage(year,month,day); </p><p>  doMark(); </p><p><b>  }</b></p><p>  else if(e.getSource()==nextMonth){</p><p><b>  month++;&

63、lt;/b></p><p>  if(month>12) month=1;</p><p>  showMonth.setText(" "+month);</p><p>  calendarMessage.setMonth(month);</p><p>  calendarPad.setCalendarM

64、essage(calendarMessage);</p><p>  calendarPad.showMonthCalendar(); </p><p>  notePad.setShowMessage(year,month,day); </p><p><b>  doMark();</b></p><p><b

65、>  }</b></p><p>  else if(e.getSource()==SoundRecord){</p><p>  Sound s=new Sound("E:\\mp3\\翅膀.wma");</p><p>  s.start();}</p><p>  else if(e.getSour

66、ce()==previousMonth){</p><p><b>  month--;</b></p><p>  if(month<1) month=12;</p><p>  showMonth.setText(" "+month);</p><p>  calendarMessage.s

67、etMonth(month);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMonthCalendar();</p><p>  notePad.setShowMessage(year,month,day); </p><

68、p>  doMark(); </p><p><b>  }</b></p><p>  else if(e.getSource()==showYear){</p><p>  String s=showYear.getText().trim();</p><p>  char a[]=s.toCharArray(

69、);</p><p>  boolean boo=false;</p><p>  for(int i=0;i<a.length;i++)</p><p>  if(!(Character.isDigit(a[i])))</p><p>  boo=true; </p><p>  if(boo=

70、=true) //彈出“警告”消息對(duì)話框</p><p>  JOptionPane.showMessageDialog(this,"您輸入了非法年份","警告",</p><p>  JOptionPane.WARNING_MESSAGE);</p><p>  else if(boo==false)</p>

71、<p>  year=Integer.parseInt(s);</p><p>  showYear.setText(""+year);</p><p>  calendarMessage.setYear(year);</p><p>  calendarPad.setCalendarMessage(calendarMessage)

72、;</p><p>  calendarPad.showMonthCalendar(); </p><p>  notePad.setShowMessage(year,month,day); </p><p>  doMark(); </p><p><b>  }</b></p><p>  e

73、lse if(e.getSource()==saveDailyRecord){</p><p>  notePad.save(dir,year,month,day);</p><p><b>  doMark();</b></p><p><b>  }</b></p><p>  else if(

74、e.getSource()==deleteDailyRecord){</p><p>  notePad.delete(dir,year,month,day);</p><p><b>  doMark();</b></p><p><b>  } </b></p><p>  else if(e.

75、getSource()==readDailyRecord)</p><p>  notePad.read(dir,year,month,day);</p><p><b>  }</b></p><p>  public void mousePressed(MouseEvent e){</p><p>  JTextFi

76、eld text=(JTextField)e.getSource();</p><p>  String str=text.getText().trim();</p><p>  try{ day=Integer.parseInt(str);</p><p><b>  }</b></p><p>  catch(Num

77、berFormatException exp){</p><p><b>  } </b></p><p>  calendarMessage.setDay(day); </p><p>  notePad.setShowMessage(year,month,day); </p><p><b>  }<

78、;/b></p><p>  public void mouseReleased(MouseEvent e){}</p><p>  public void mouseEntered(MouseEvent e) {}</p><p>  public void mouseExited(MouseEvent e) {}</p><p>

79、  public void mouseClicked(MouseEvent e) {}</p><p>  public void focusGained(FocusEvent e){</p><p>  Component com=(Component)e.getSource();</p><p>  com.setBackground(Color.pink);&

80、lt;/p><p><b>  }</b></p><p>  public void focusLost(FocusEvent e){</p><p>  Component com=(Component)e.getSource();</p><p>  com.setBackground(backColor);</

81、p><p><b>  }</b></p><p>  public void doMark(){</p><p>  for(int i=0;i<showDay.length;i++){</p><p>  showDay[i].removeAll();</p><p>  String st

82、r=showDay[i].getText().trim();</p><p><b>  try{</b></p><p>  int n=Integer.parseInt(str);</p><p>  if(isHaveDailyRecord(n)==true){ //見后面的isHaveDailyRecord()方法</p>

83、<p>  JLabel mess=new JLabel("有");</p><p>  mess.setFont(new Font("TimesRoman",Font.PLAIN,11));</p><p>  mess.setForeground(Color.blue) ; </p><p>  showDay

84、[i].add(mess);</p><p><b>  }</b></p><p><b>  }</b></p><p>  catch(Exception exp){}</p><p><b>  }</b></p><p>  calendarP

85、ad.repaint(); </p><p>  calendarPad.validate(); </p><p><b>  }</b></p><p>  public boolean isHaveDailyRecord(int n){</p><p>  String key=""+year

86、+""+month+""+n;</p><p>  String [] dayFile=dir.list();</p><p>  boolean boo=false;</p><p>  for(int k=0;k<dayFile.length;k++){</p><p>  if(dayFil

87、e[k].equals(key+".txt")){</p><p><b>  boo=true;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  } </b>

88、;</p><p>  return boo;</p><p><b>  } </b></p><p>  public static void main(String args[]){</p><p>  new CalendarWindow();</p><p><b>  }&l

89、t;/b></p><p><b>  } </b></p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import javax.swing.*;</p><p>  import java.

90、awt.geom.*;</p><p>  import java.util.*;</p><p>  public class Clock extends JPanel implements ActionListener{</p><p>  Date date;</p><p>  javax.swing.Timer secondTime

91、; </p><p>  int hour,munite,second;</p><p>  Line2D secondLine,muniteLine,hourLine;</p><p>  int a,b,c,width,height;</p><p>  double [] pointSX=new double[60], //用來表示秒針

92、端點(diǎn)坐標(biāo)的數(shù)組</p><p>  pointSY=new double[60], </p><p>  pointMX=new double[60], //用來表示分針端點(diǎn)坐標(biāo)的數(shù)組</p><p>  pointMY=new double[60], </p><p>  pointHX=new double[60], //用來表示時(shí)針端點(diǎn)

93、坐標(biāo)的數(shù)組</p><p>  pointHY=new double[60];</p><p><b>  Clock(){</b></p><p>  setBackground(new Color(20,50,100));</p><p>  initPoint();</p><p>  se

94、condTime=new javax.swing.Timer(1000,this);</p><p>  secondLine=new Line2D.Double(0,0,0,0);</p><p>  muniteLine=new Line2D.Double(0,0,0,0);</p><p>  hourLine=new Line2D.Double(0,0,0,

95、0);</p><p>  secondTime.start(); //秒針開始計(jì)時(shí)</p><p><b>  }</b></p><p>  private void initPoint(){</p><p>  width=getBounds().width;</p&g

96、t;<p>  height=getBounds().height;</p><p>  pointSX[0]=0; //12點(diǎn)秒針位置</p><p>  pointSY[0]=-height/2*5/6;</p><p>  pointMX[0]=0;

97、//12點(diǎn)分針位置</p><p>  pointMY[0]=-(height/2*4/5);</p><p>  pointHX[0]=0; //12點(diǎn)時(shí)針位置</p><p>  pointHY[0]=-(height/2*2/3);</p><p>  double angle=6*Mat

98、h.PI/180; //刻度為6度</p><p>  for(int i=0;i<59;i++) { //計(jì)算數(shù)組中的坐標(biāo)</p><p>  pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];</p><p>  pointSY

99、[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle);</p><p>  pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i];</p><p>  pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX

100、[i]*Math.sin(angle);</p><p>  pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];</p><p>  pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle);</p><p>

101、;<b>  }</b></p><p>  for(int i=0;i<60;i++){ </p><p>  pointSX[i]=pointSX[i]+width/2; //坐標(biāo)平移</p><p>  pointSY[i]=pointSY[i]+height/2;</p>

102、<p>  pointMX[i]=pointMX[i]+width/2; //坐標(biāo)平移</p><p>  pointMY[i]=pointMY[i]+height/2;</p><p>  pointHX[i]=pointHX[i]+width/2; //坐標(biāo)平移</p><p>  pointHY[i]=

103、pointHY[i]+height/2;</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void paintComponent(Graphics g){</p><p>  super.paintComponent(g);</

104、p><p>  initPoint(); </p><p>  for(int i=0;i<60;i++){ //繪制表盤上的小刻度和大刻度</p><p>  int m=(int)pointSX[i];</p><p>  int n=(int)pointSY[i];</p><p>  if(i%5==

105、0){</p><p>  if(i==0||i==15||i==30||i==45){</p><p>  int k=10; </p><p>  g.setColor(Color.white);</p><p>  g.fillOval(m-k/2,n-k/2,k,k);</p><p><b>  

106、}</b></p><p><b>  else{ </b></p><p>  int k=7; </p><p>  g.setColor(Color.white);</p><p>  g.fillOval(m-k/2,n-k/2,k,k);</p><p><b>

107、  }</b></p><p><b>  }</b></p><p><b>  else{</b></p><p><b>  int k=2;</b></p><p>  g.setColor(Color.black);</p><p>

108、;  g.fillOval(m-k/2,n-k/2,k,k);</p><p><b>  }</b></p><p><b>  }</b></p><p>  g.fillOval(width/2-5,height/2-5,10,10); //鐘表中心的實(shí)心圓</p><p>  Graphi

109、cs2D g_2d=(Graphics2D)g;</p><p>  g_2d.setColor(Color.red);</p><p>  g_2d.draw(secondLine);</p><p>  BasicStroke bs=</p><p>  new BasicStroke(2f,BasicStroke.CAP_ROUND,B

110、asicStroke.JOIN_MITER);</p><p>  g_2d.setStroke(bs);</p><p>  g_2d.setColor(Color.blue);</p><p>  g_2d.draw(muniteLine);</p><p>  bs=new BasicStroke(4f,BasicStroke.CAP_

111、BUTT,BasicStroke.JOIN_MITER);</p><p>  g_2d.setStroke(bs);</p><p>  g_2d.setColor(Color.orange);</p><p>  g_2d.draw(hourLine);</p><p><b>  }</b></p>

112、<p>  public void actionPerformed(ActionEvent e){</p><p>  if(e.getSource()==secondTime){</p><p>  date=new Date();</p><p>  String s=date.toString();</p><p>  hou

113、r=Integer.parseInt(s.substring(11,13)); </p><p>  munite=Integer.parseInt(s.substring(14,16));</p><p>  second=Integer.parseInt(s.substring(17,19)); //獲取時(shí)間中的秒</p><p>  int h=hour%12

114、;</p><p>  a=second; //秒針端點(diǎn)的坐標(biāo)</p><p>  b=munite; //分針端點(diǎn)的坐標(biāo)</p><p>  c=h*5+munite/12; //時(shí)針端點(diǎn)的坐標(biāo)</p><p>  secondLine.se

115、tLine(width/2,height/2,(int)pointSX[a],(int)pointSY[a]);</p><p>  muniteLine.setLine(width/2,height/2,(int)pointMX[b],(int)pointMY[b]);</p><p>  hourLine.setLine(width/2,height/2,(int)pointHX[c]

116、,(int)pointHY[c]);</p><p>  repaint();</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  import java.io.F

117、ile;</p><p>  import javax.sound.sampled.AudioFormat;</p><p>  import javax.sound.sampled.AudioInputStream;</p><p>  import javax.sound.sampled.AudioSystem;</p><p>  im

118、port javax.sound.sampled.DataLine;</p><p>  import javax.sound.sampled.SourceDataLine;</p><p>  public class Sound extends Thread{</p><p>  private String filename;</p><p

119、>  public Sound(String soundfile){</p><p>  filename=soundfile;</p><p><b>  }</b></p><p>  public void run(){</p><p>  File soundFile=new File(filename);

120、</p><p>  AudioInputStream audioInputStream=null;</p><p><b>  try{</b></p><p>  audioInputStream=AudioSystem.getAudioInputStream(soundFile);</p><p>  }catch

121、(Exception e){</p><p>  e.printStackTrace();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  AudioFormat format=audioInputStream.getFormat();

122、</p><p>  SourceDataLine auline=null;</p><p>  DataLine.Info info =new DataLine.Info(SourceDataLine.class, format);</p><p><b>  try{</b></p><p>  auline=(So

123、urceDataLine)AudioSystem.getLine(info);</p><p>  auline.open(format);</p><p>  }catch(Exception e){</p><p>  e.printStackTrace();</p><p><b>  return;</b><

124、;/p><p><b>  }</b></p><p>  auline.start();</p><p>  int nBytesRead=0;</p><p>  byte[] abData=new byte[1024];</p><p><b>  try{</b><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論