java課程設(shè)計(jì)--日歷記事本_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  本科生課程設(shè)計(jì)</b></p><p><b>  評(píng)語(yǔ):</b></p><p>  課程設(shè)計(jì)時(shí)間:2010年12月20日--2010年12月24日</p><p> 課程名稱Java程序設(shè)計(jì)課程設(shè)計(jì)</p><p> 課程編號(hào)</p><p>

2、; 題目日歷記事本</p><p> 學(xué)號(hào)200811622214</p><p> 學(xué)生姓名</p><p> 所在專業(yè)信息管理與信息系統(tǒng)</p><p> 所在班級(jí)</p><p> 指導(dǎo)教師</p><p> 成績(jī)</p><p> 教師簽字</p>

3、<p><b>  目 錄</b></p><p>  摘要··························

4、3;·····················2</p><p>  1.引言··········

5、3;····································&#

6、183;2</p><p>  2. 設(shè)計(jì)的目的與任務(wù)······························&

7、#183;·····2</p><p>  3.設(shè)計(jì)方案··························

8、;··················3</p><p>  3.1總體設(shè)計(jì)·············&#

9、183;···························3</p><p>  3.2設(shè)計(jì)要求····

10、;····································

11、83;3</p><p>  3.3系統(tǒng)的主要功能······························

12、83;····3</p><p>  3.4各個(gè)類的組合結(jié)構(gòu)圖··························&

13、#183;····4</p><p>  3.5各個(gè)類說(shuō)明··························

14、83;············4</p><p>  3.5.1 CalendarWindow類················

15、3;···········4</p><p>  3.5.2 CalendarMessage類·················

16、3;·······11</p><p>  3.5.3 CalendarPad類······················&

17、#183;······13</p><p>  3.5.4 NotePad類·······················&#

18、183;········14</p><p>  3.5.5 CalendarImage類····················

19、83;······19</p><p>  3.5.6 Clock類························

20、··········20</p><p>  4.各種功能截圖·····················&

21、#183;·················24</p><p>  5. 課程設(shè)計(jì)總結(jié)·············&

22、#183;·························26</p><p>  《Java程序設(shè)計(jì)》課程設(shè)計(jì)</p><p><b

23、>  ——日歷記事本 </b></p><p><b>  摘 要</b></p><p>  本課程設(shè)計(jì)通過(guò)代碼實(shí)現(xiàn)將理論知識(shí)和具體實(shí)踐相結(jié)合,鞏固提高了對(duì)JAVA的相關(guān)方法與概念的理解,使學(xué)生的發(fā)散思維及動(dòng)手能力進(jìn)一步加強(qiáng),加強(qiáng)對(duì)計(jì)算機(jī)及軟件工程的進(jìn)一步了解。</p><p>  在這個(gè)課程設(shè)計(jì)中,我們做成了一個(gè)有日

24、歷標(biāo)記的記事本軟件,日歷記事本面板由日歷、記事本、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來(lái)顯示當(dāng)前時(shí)間。本軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。</p><p><b>  引言</b></p><p>  

25、Java是一種純面向?qū)ο蟮摹⒕W(wǎng)絡(luò)編程首選的語(yǔ)言。Java技術(shù)作為軟件開(kāi) 的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之一。為了適應(yīng)時(shí)代潮流,我們應(yīng)該加強(qiáng)對(duì)Java的學(xué)習(xí),更好的掌握這門(mén)課程。為此,我們成了一個(gè)課程小組,經(jīng)過(guò)小組成的商討之后,我們決定以“日歷記事本”為設(shè) 題材,借此鞏固加深我們對(duì)Java的了解。</p><p>  本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,程序設(shè)計(jì)也不是很復(fù)雜,但在此程序的設(shè)計(jì)

26、過(guò)程也是一個(gè)學(xué)習(xí)過(guò)程,更是對(duì)復(fù)雜程序的一個(gè)學(xué)習(xí)過(guò)程,還能培養(yǎng)我們的數(shù)抽象能力。因此,我們覺(jué)得這次課程設(shè)計(jì)是非常有意義的,能為我們今后學(xué)習(xí)面向過(guò)程的程序設(shè)計(jì)作一些鋪墊。</p><p><b>  2.設(shè)計(jì)目的與任務(wù)</b></p><p>  本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過(guò)Java程序設(shè)計(jì)的一些重要理論基礎(chǔ)來(lái)實(shí)現(xiàn)“日歷記事本”的“日歷”和“記事本”的雙重功能。

27、并通過(guò)此次課程設(shè)計(jì)的訓(xùn)練,使學(xué)生鞏固和加深對(duì)Java這門(mén)課程的理解,通過(guò)利用所學(xué)到的計(jì)算科學(xué)的理論知識(shí),提高解決實(shí)際問(wèn)題的能力,增強(qiáng)運(yùn)算、編程和使用技術(shù)資料的技能,通過(guò)實(shí)際問(wèn)題的分析設(shè)計(jì)、編程和調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。通過(guò)這次課程設(shè)計(jì),培養(yǎng)實(shí)事求是、認(rèn)真、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。</p><p><b>  3.設(shè)計(jì)方

28、案</b></p><p><b>  3.1 總體設(shè)計(jì)</b></p><p> ?。?)問(wèn)題定義:創(chuàng)建日歷記事本,實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片和時(shí)鐘,增加美觀。</p><p> ?。?)問(wèn)題分析:通過(guò)對(duì)“日歷記事本”這一題材的分析,我需要四個(gè)類來(lái)實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過(guò)主類Cale

29、ndWindow創(chuàng)建動(dòng)日歷記事本軟件的主窗口,該類含有main方法,程序從該類開(kāi)始執(zhí)行。再用余下CalendarPad、CalendarMessage 、NotePad類來(lái)顯示并改變?nèi)掌诤蛯?shí)現(xiàn)記事本的功能。而CalendarImage和Clock這兩個(gè)類用來(lái)顯示圖片和時(shí)鐘。</p><p> ?。?)研究意義:通過(guò)本次課程設(shè)計(jì),我們掌握了Java語(yǔ)言的基本運(yùn)用,提高了理論結(jié)合實(shí)際的能力。 </p>

30、<p><b>  3.2設(shè)計(jì)要求 </b></p><p> ?。?)界面的左側(cè)是日歷和一幅圖。該日歷可以按年前后翻動(dòng),用鼠標(biāo)鼠標(biāo)單擊“上年”按鈕時(shí),當(dāng)前日歷的年份將減一;當(dāng)鼠標(biāo)左鍵單擊“下年”按鈕,當(dāng)前日歷的年份將加一。該日歷還可以在某年內(nèi)按月前月后翻動(dòng),當(dāng)鼠標(biāo)左鍵單擊“上月”按鈕時(shí),當(dāng)前日歷的月份將減一;當(dāng)鼠標(biāo)左鍵單擊“下月” 當(dāng)前日歷表的月份將加一。圖片是為了增加美觀而加進(jìn)

31、去的。 (2)系統(tǒng)界面的右側(cè)是記事本和一個(gè)鬧鐘。用鼠標(biāo)單擊日歷上的日期,就可以通過(guò)該記事本編輯有關(guān)日志,并將日志保存到一個(gè)文件,該文件的名字由該日期組成的字符序列命名。用戶可以查看,刪除某個(gè)日期的日志,也可以繼續(xù)向某個(gè)日志添加新內(nèi)容。</p><p>  時(shí)鐘能夠?qū)崟r(shí)顯示當(dāng)前的時(shí)間。 </p><p> ?。?)當(dāng)某個(gè)日期有日志時(shí),在日歷表該日期的外觀上就會(huì)出現(xiàn)“yes”標(biāo)記,表明

32、這個(gè)日期有日志,當(dāng)用戶刪除某個(gè)日期的日志后,該日期的外觀上“yes”標(biāo)志就會(huì)消失。</p><p>  3.3系統(tǒng)的主要功能 </p><p>  (1)可以對(duì)個(gè)人日志進(jìn)行添加、查閱、刪除;</p><p> ?。?)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ;</p><p> ?。?)可以顯示當(dāng)前日期與時(shí)間。</p

33、><p>  3.4各個(gè)類的組合結(jié)構(gòu)圖</p><p><b>  3.5 各個(gè)類說(shuō)明</b></p><p>  (1)主函數(shù)CalendarWindow類</p><p>  該類是整個(gè)程序的主框架,是javax.swing包中Jframe的一個(gè)子類。并實(shí)現(xiàn)了ActionListener、MouseListener和Fo

34、cusListener接口。以下是該類的有關(guān)數(shù)據(jù)說(shuō)明!</p><p><b>  成員變量</b></p><p>  year,month和day是int型變量。它們的值分別確定年份、月份和日期。</p><p>  calendarMessage是CalnedarMessage對(duì)象,該對(duì)象用來(lái)處理與日期有關(guān)的數(shù)據(jù)。</p>

35、<p>  calendarPad是CalendarPad對(duì)象,該對(duì)象可以顯示與日期有關(guān)的數(shù)據(jù)。</p><p>  notPad是NotPad的對(duì)象。具有編輯、讀取、保存和刪除日志的功能。</p><p>  showYear和showMonth是JtextField類創(chuàng)建的文本框,用來(lái)顯示年月。</p><p>  showDay數(shù)組的每個(gè)單元是Jte

36、xtField類創(chuàng)建的用來(lái)顯示日期的文本框。</p><p>  calendarImage是CalendarImage創(chuàng)建的對(duì)象,用來(lái)顯示圖像。</p><p>  clock是Clock創(chuàng)建的對(duì)象,用來(lái)顯示時(shí)鐘。</p><p>  nextYear,PreviousYear,nextMonth和PreviousMonth是JButton創(chuàng)建的按鈕對(duì)象,名字依次

37、為“下年、上年、下月、上月”。這些按鈕都將當(dāng)前窗口注冊(cè)為自己的ActionEvent事件監(jiān)視器。</p><p>  savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton創(chuàng)建的按鈕對(duì)象,名字依次為“保存日志、刪除日志、讀取日志”。這些按鈕都將當(dāng)前窗口注冊(cè)為自己的ActionEvent事件監(jiān)視器。</p><p><b>

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

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

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

41、er接口中的方法。CalendarWindow創(chuàng)建窗口是showDay數(shù)組中的JtextField文本框的FocusEvent事件監(jiān)視器,當(dāng)用戶的操作導(dǎo)致某個(gè)顯示日期的文本框的焦點(diǎn)發(fā)生變化時(shí),窗口將執(zhí)行focusGained(FocusEvent)或focusLost(FocusEvent)方法進(jìn)行相應(yīng)的操作。</p><p>  doMark()方法負(fù)責(zé)對(duì)有日志的日期作出標(biāo)志。</p><p

42、>  main方法是程序運(yùn)行的入口方法。</p><p><b>  詳細(xì)代碼:</b></p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p&

43、gt;  import java.util.*;</p><p>  import java.io.*;</p><p>  public class CalendarWindow extends JFrame implements ActionListener,</p><p>  MouseListener,FocusListener</p>&l

44、t;p><b>  {</b></p><p>  int year,month,day;</p><p>  CalendarMessage calendarMessage;</p><p>  CalendarPad calendarPad;</p><p>  NotePad notePad;</p&g

45、t;<p>  JTextField showYear,showMonth;</p><p>  JTextField showDay[];</p><p>  CalendarImage calendarImage;</p><p>  Clock clock;</p><p>  JButton nextYear,previ

46、ousYear,nextMonth,previousMonth;</p><p>  JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;</p><p><b>  File dir;</b></p><p>  Color backColor=Color.white;</

47、p><p>  public CalendarWindow()</p><p><b>  {</b></p><p>  dir= new File("./dailyRecord");</p><p>  dir.mkdir();</p><p>  showDay = new

48、JTextField[42];</p><p>  for(int i=0;i<showDay.length;i++)</p><p><b>  {</b></p><p>  showDay[i]=new JTextField();</p><p>  showDay[i].setBackground(back

49、Color);</p><p>  showDay[i].setLayout(new GridLayout(3,3));</p><p>  showDay[i].addMouseListener(this);</p><p>  showDay[i].addFocusListener(this);</p><p><b>  }&

50、lt;/b></p><p>  calendarMessage = new CalendarMessage();</p><p>  calendarPad = new CalendarPad();</p><p>  notePad = new NotePad();</p><p>  Calendar calendar = Cal

51、endar.getInstance();</p><p>  calendar.setTime(new Date());</p><p>  year = calendar.get(Calendar.YEAR);</p><p>  month = calendar.get(Calendar.MONTH)+1;</p><p>  day =

52、 calendar.get(Calendar.DAY_OF_MONTH);</p><p>  calendarMessage.setYear(year);</p><p>  calendarMessage.setMonth(month);</p><p>  calendarMessage.setDay(day);</p><p>  c

53、alendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.setShowDayTextField(showDay);</p><p>  notePad.setShowMessage(year,month,day); </p><p>  calendarPad.showMonthCa

54、lendar();</p><p><b>  doMark();</b></p><p>  calendarImage = new CalendarImage();</p><p>  calendarImage.setImageFile(new File("flower.jpg"));</p><p

55、>  clock = new Clock();</p><p>  JSplitPane splitV1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);</p><p>  JSplitPane splitV2 = new JSplitPane(JSplitPane.VERTICAL_SPL

56、IT,notePad,clock);</p><p>  JSplitPane splitH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);</p><p>  add(splitH,BorderLayout.CENTER);</p><p>  showYear = new JTextF

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

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

59、gt;  nextYear = new JButton("下年");</p><p>  previousYear = new JButton("上年");</p><p>  nextMonth = new JButton("下月");</p><p>  previousMonth = new JBut

60、ton("上月");</p><p>  nextYear.addActionListener(this);</p><p>  previousYear.addActionListener(this);</p><p>  nextMonth.addActionListener(this);</p><p>  prev

61、iousMonth.addActionListener(this);</p><p>  showYear.addActionListener(this);</p><p>  JPanel north = new JPanel();</p><p>  north.add(previousYear);</p><p>  north.add

62、(showYear);</p><p>  north.add(nextYear);</p><p>  north.add(previousMonth);</p><p>  north.add(showMonth);</p><p>  north.add(nextMonth);</p><p>  add(nor

63、th,BorderLayout.NORTH);</p><p>  saveDailyRecord = new JButton("保存日志");</p><p>  deleteDailyRecord = new JButton("刪除日志");</p><p>  readDailyRecord = new JButton(

64、"讀取日志");</p><p>  saveDailyRecord.addActionListener(this);</p><p>  deleteDailyRecord.addActionListener(this);</p><p>  readDailyRecord.addActionListener(this);</p>

65、<p>  JPanel pSouth = new JPanel();</p><p>  pSouth.add(saveDailyRecord);</p><p>  pSouth.add(deleteDailyRecord);</p><p>  pSouth.add(readDailyRecord);</p><p>  a

66、dd(pSouth,BorderLayout.SOUTH);</p><p>  setVisible(true);</p><p>  setBounds(70,70,770,500);</p><p>  validate();</p><p>  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

67、);</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if(e.getSource()==nextYear)</p><p

68、><b>  {</b></p><p><b>  year++;</b></p><p>  showYear.setText(""+year);</p><p>  calendarMessage.setYear(year);</p><p>  calendarPa

69、d.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMonthCalendar();</p><p>  notePad.setShowMessage(year,month,day);</p><p><b>  doMark();</b></p>&l

70、t;p><b>  }</b></p><p>  else if (e.getSource()==previousYear)</p><p><b>  {</b></p><p><b>  year--;</b></p><p>  showYear.setText

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

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

73、t;  {</b></p><p><b>  month++;</b></p><p>  if(month>12) month=1;</p><p>  showMonth.setText(""+month);</p><p>  calendarPad.setCalendarM

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

75、t;  }</b></p><p>  else if (e.getSource()==previousMonth)</p><p><b>  {</b></p><p><b>  month--;</b></p><p>  if(month<1) month=12;<

76、/p><p>  showMonth.setText(""+month);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMonthCalendar();</p><p>  notePad.setSho

77、wMessage(year,month,day);</p><p><b>  doMark();</b></p><p><b>  }</b></p><p>  else if (e.getSource()==showYear)</p><p><b>  {</b>&l

78、t;/p><p>  String s = showYear.getText().trim();</p><p>  char a[] = s.toCharArray();</p><p>  boolean boo = false;</p><p>  for(int i = 0;i < a.length;i++)</p>

79、<p><b>  {</b></p><p>  if(!(Character.isDigit(a[i])))</p><p>  boo = true;</p><p><b>  }</b></p><p>  if(boo==true)</p><p>  

80、JOptionPane.showMessageDialog(this,"你輸入了非法年份","警告!",</p><p>  JOptionPane.WARNING_MESSAGE);</p><p>  else if(boo==false)</p><p>  year = Integer.parseInt(s);<

81、/p><p>  showYear.setText(""+year);</p><p>  calendarMessage.setYear(year);</p><p>  calendarPad.setCalendarMessage(calendarMessage);</p><p>  calendarPad.showMo

82、nthCalendar();</p><p>  notePad.setShowMessage(year,month,day);</p><p><b>  doMark();</b></p><p><b>  }</b></p><p>  else if (e.getSource()== sa

83、veDailyRecord)</p><p><b>  {</b></p><p>  notePad.save(dir,year,month,day);</p><p><b>  doMark();</b></p><p><b>  }</b></p>&

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

85、><b>  }</b></p><p>  else if (e.getSource()==readDailyRecord)</p><p><b>  {</b></p><p>  notePad.read(dir,year,month,day);</p><p><b>  

86、doMark();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public void mousePressed(MouseEvent e)</p><p><b>  {</b></p>

87、<p>  JTextField text = (JTextField)e.getSource();</p><p>  String str = text.getText().trim();</p><p><b>  try</b></p><p><b>  {</b></p><p&

88、gt;  day = Integer.parseInt(str);</p><p><b>  }</b></p><p>  catch (NumberFormatException exp)</p><p><b>  {}</b></p><p>  calendarMessage.setDa

89、y(day);</p><p>  notePad.setShowMessage(year,month,day);</p><p><b>  }</b></p><p>  public void mouseReleased(MouseEvent e){}</p><p>  public void mouseEnte

90、red(MouseEvent e){}</p><p>  public void mouseExited(MouseEvent e){}</p><p>  public void mouseClicked(MouseEvent e){}</p><p>  public void focusGained(FocusEvent e)</p><

91、p><b>  {</b></p><p>  Component com = (Component)e.getSource();</p><p>  com.setBackground(Color.pink);</p><p><b>  }</b></p><p>  public voi

92、d focusLost(FocusEvent e)</p><p><b>  {</b></p><p>  Component com = (Component)e.getSource();</p><p>  com.setBackground(backColor);</p><p><b>  }<

93、;/b></p><p>  public void doMark()</p><p><b>  {</b></p><p>  for(int i=0;i<showDay.length;i++)</p><p><b>  {</b></p><p>  sh

94、owDay[i].removeAll();</p><p>  String str = showDay[i].getText().trim();</p><p><b>  try</b></p><p><b>  {</b></p><p>  int n = Integer.parseInt

95、(str);</p><p>  if(isHaveDailyRecord(n)==true)</p><p><b>  {</b></p><p>  JLabel mess = new JLabel("yes");</p><p>  mess.setFont(new Font("Ti

96、mesRoman",Font.PLAIN,11));</p><p>  mess.setForeground(Color.blue);</p><p>  showDay[i].add(mess);</p><p><b>  }</b></p><p><b>  }</b></

97、p><p>  catch (Exception exp){}</p><p><b>  }</b></p><p>  calendarPad.repaint();</p><p>  calendarPad.validate();</p><p><b>  }</b>&l

98、t;/p><p>  public boolean isHaveDailyRecord(int n)</p><p><b>  {</b></p><p>  String key = ""+year+""+month+""+n;</p><p>  String

99、 []dayFile = dir.list();</p><p>  boolean boo = false;</p><p>  for(int k = 0;k<dayFile.length;k++)</p><p><b>  {</b></p><p>  if(dayFile[k].equals(key+&

100、quot;.txt"))</p><p><b>  {</b></p><p>  boo = true;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }&l

101、t;/b></p><p>  return boo;</p><p><b>  }</b></p><p>  public static void main(String args[]) </p><p><b>  {</b></p><p>  new Cal

102、endarWindow();</p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)CalendarMessage類</p><p>  CalendarMessage類創(chuàng)建的對(duì)象calendarMessage是CalendarWindow窗口的重

103、要成員對(duì)象之一,負(fù)責(zé)處理和日期有關(guān)的數(shù)據(jù)。該類的有關(guān)數(shù)據(jù)說(shuō)明如下:</p><p><b>  成員變量</b></p><p>  year,month,day是int型數(shù)據(jù),它們的值分別確定年份、月份和日期。</p><p><b>  方法</b></p><p>  setYear(int)

104、和getYear()方法分別用來(lái)設(shè)置year和獲取year的值。</p><p>  setMonth(int)和getMonth()方法分別用來(lái)設(shè)置month和獲取month的值。</p><p>  setDay(int)和getDay()方法分別用來(lái)設(shè)置和獲取day的值。</p><p>  getMonthCalendar()方法是用來(lái)處理日期數(shù)據(jù),使其按著

105、習(xí)慣來(lái)顯示。即日歷牌中每行的第一列為“星期天”。getMonthCalendar()方法根據(jù)year,month和day的值返回一個(gè)存放著“日歷”數(shù)據(jù)的String類型的數(shù)組,例如,如果某月有30天,而且該月的第一天是星期三,那么返回的String類型的數(shù)組是:“”,“”,“”,“1”,“2”,·····,“30”。</p><p><b>  詳細(xì)代碼

106、:</b></p><p>  import java.util.Calendar;</p><p>  public class CalendarMessage{ </p><p>  int year=-1,month=-1,day=-1;</p><p>  public void setYear(int year){<

107、;/p><p>  this.year=year;</p><p><b>  }</b></p><p>  public int getYear(){</p><p>  return year;</p><p><b>  }</b></p><p>

108、;  public void setMonth(int month){</p><p>  if(month<=12&&month>=1)</p><p>  this.month=month;</p><p><b>  else</b></p><p>  this.month=1;<

109、;/p><p><b>  }</b></p><p>  public int getMonth(){</p><p>  return month;</p><p><b>  }</b></p><p>  public void setDay(int day){</

110、p><p>  this.day=day;</p><p><b>  }</b></p><p>  public int getday()</p><p><b>  {</b></p><p>  return day;</p><p><b&

111、gt;  }</b></p><p>  public String [] getMonthCalendar(){</p><p>  String [] day=new String[42];</p><p>  Calendar rili=Calendar.getInstance();</p><p>  rili.set(y

112、ear,month-1,1);//將日歷翻到y(tǒng)ear年month月1日</p><p>  int 星期幾=rili.get(Calendar.DAY_OF_WEEK)-1;</p><p>  int dayAmount=0;</p><p>  if(month==1||month==3||month==5||month==7||month==8||month=

113、=10||month==12)</p><p>  dayAmount=31;</p><p>  if(month==4||month==6||month==9||month==11)</p><p>  dayAmount=30;</p><p>  if(month==2)</p><p>  if(((year

114、%4==0)&&(year%100!=0))||year%400==0)</p><p>  dayAmount=29;</p><p><b>  else </b></p><p>  dayAmount=28;</p><p>  for(int i=0;i<星期幾;i++)</p>

115、;<p>  day[i]=" ";</p><p>  for(int i=星期幾,n=1;i<星期幾+dayAmount;i++){</p><p>  day[i]=String.valueOf(n);</p><p><b>  n++;</b></p><p><b

116、>  }</b></p><p>  for (int i=星期幾+dayAmount;i<42;i++ )</p><p>  day[i]=" ";</p><p>  return day;</p><p><b>  }</b></p><p>

117、<b>  }</b></p><p>  (3)CalendarPad類</p><p>  CalendarPad類是javax.swing包中Jpanel容器的子類,所創(chuàng)建的對(duì)象:calendarPad是CalendarWindow類中最重要的成員之一,負(fù)責(zé)顯示經(jīng)CalendarMessage類處理后的日期數(shù)據(jù),被添加到CalendarWindow窗口的左上側(cè)

118、。以下是該類的有關(guān)說(shuō)明:</p><p><b>  成員變量</b></p><p>  year,month和day是int型數(shù)據(jù),它們的值分別確定年份、月份和日期</p><p>  calendarMessage是CalendarMessage對(duì)象,該對(duì)象可以處理和日期有關(guān)的數(shù)據(jù)。</p><p>  showD

119、ay數(shù)組的每個(gè)單元是JtextField類創(chuàng)建的用來(lái)顯示日期的文本框。</p><p>  “星期”是String數(shù)組,單元的值依次為“SUN日”、“MON一”、“TUE二”、“WED三”、“THU四”、“FRI五”、“SAT六”。</p><p><b>  方法</b></p><p>  CalendarPad()是構(gòu)造方法,用來(lái)創(chuàng)建ca

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

121、lt;/p><p><b>  詳細(xì)代碼:</b></p><p>  import javax.swing.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.util.*;

122、</p><p>  public class CalendarPad extends JPanel{</p><p>  int year,month,day;</p><p>  CalendarMessage calendarMessage;</p><p>  JTextField []showDay;</p><

123、p>  JLabel title [];</p><p>  String [] 星期={"SUN 日","MON 一","TUE 二","WED 三","THU 四","FRI 五","SAT 六"};</p><p>  JPanel nor

124、th,center;</p><p>  public CalendarPad(){</p><p>  setLayout(new BorderLayout());</p><p>  north=new JPanel();</p><p>  north.setLayout(new GridLayout(1,7));</p>

125、<p>  center=new JPanel();</p><p>  center.setLayout(new GridLayout(6,7));</p><p>  add(center,BorderLayout.CENTER);</p><p>  add(north,BorderLayout.NORTH);</p><p&g

126、t;  title=new JLabel[7];</p><p>  for(int j=0;j<7;j++){</p><p>  title[j]=new JLabel();</p><p>  title[j].setFont(new Font("TimesRoman",Font.BOLD,12));</p><p

127、>  title[j].setText(星期[j]);</p><p>  title[j].setHorizontalAlignment(JLabel.CENTER);</p><p>  title[j].setBorder(BorderFactory.createRaisedBevelBorder());</p><p>  north.add(titl

128、e[j]);</p><p><b>  }</b></p><p>  title[0].setForeground(Color.red);</p><p>  title[6].setForeground(Color.blue);</p><p><b>  }</b></p>&

129、lt;p>  public void setShowDayTextField(JTextField [] text){</p><p>  showDay=text;</p><p>  for(int i=0;i<showDay.length;i++){</p><p>  showDay[i].setFont(new Font("Times

130、Roman",Font.BOLD,15));</p><p>  showDay[i].setHorizontalAlignment(JTextField.CENTER);</p><p>  showDay[i].setEditable(false);</p><p>  center.add(showDay[i]);</p><p&

131、gt;<b>  }</b></p><p><b>  }</b></p><p>  public void setCalendarMessage(CalendarMessage calendarMessage){</p><p>  this.calendarMessage=calendarMessage;</

132、p><p><b>  }</b></p><p>  public void showMonthCalendar(){</p><p>  String [] a=calendarMessage.getMonthCalendar();</p><p>  for(int i=0;i<42;i++)</p>

133、<p>  showDay[i].setText(a[i]);</p><p>  validate();</p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)NotePad類</p><p>  NoteP

134、ad類javax.swing包中的Jpanel容器的子類,實(shí)現(xiàn)了ActionListener接口,所創(chuàng)建的對(duì)象:notePad是MineGame CalendarWindow類中的重要成員之一,作為一個(gè)容器添加到CalendarWindow窗口的右上側(cè)以,下是該類的有關(guān)說(shuō)明:</p><p><b>  1)成員變量</b></p><p>  text 是Jtext

135、Area創(chuàng)建的文本區(qū),可在text中編譯多行文本。</p><p>  showMessage 是 JtextField 創(chuàng)建的文本條,用來(lái)顯示和日期相關(guān)的數(shù)據(jù)。</p><p>  menu是 JpopupMenu 創(chuàng)建的彈出式菜單。</p><p>  itemCopy、itemCut、itemPaste、itemClear 是JmenuItem 創(chuàng)建的菜單項(xiàng),

136、名字依次是“復(fù)制”, “剪切”, “黏貼”, “清空”。</p><p><b>  2)方法</b></p><p>  NotePad()構(gòu)造方法,用來(lái)創(chuàng)建notePad對(duì)象。</p><p>  setShowMessage(int,int,int)方法根據(jù)參數(shù)指定的日期數(shù)據(jù)顯示有關(guān)日期信息。</p><p>  

137、save(File,int,int,int)方法根據(jù)參數(shù)指定日期保存日志</p><p>  delete(File,int,int,int) 用于刪除日志</p><p>  read(File,int,int, int)用于讀取日志。</p><p><b>  詳細(xì)代碼:</b></p><p>  import

138、java.awt.*;</p><p>  import javax.swing.*;</p><p>  import java.io.*;</p><p>  import java.awt.event.*;</p><p>  public class NotePad extends JPanel implements ActionLi

139、stener{</p><p>  JTextArea text;</p><p>  JTextField showMessage;</p><p>  JPopupMenu menu;</p><p>  JMenuItem itemCopy,itemCut,itemPaste,itemClear;</p><p>

140、;  public NotePad(){</p><p>  showMessage=new JTextField();</p><p>  showMessage.setHorizontalAlignment(JTextField.CENTER);</p><p>  showMessage.setFont(new Font("TimesRoman&qu

141、ot;,Font.BOLD,16));</p><p>  showMessage.setForeground(Color.blue);</p><p>  showMessage.setBackground(Color.pink);</p><p>  showMessage.setBorder(BorderFactory.createRaisedBevelBor

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論