java課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(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>  黃 淮 學(xué) 院</p><p>  JAVA課程設(shè)計(jì)報(bào)告</p><p>  題目: 《日記本的設(shè)計(jì)與實(shí)現(xiàn)》課程設(shè)計(jì) </p><p>  學(xué) 院: 信息工程學(xué)院 </p><p>  姓 名: 劉學(xué)超 </p><p>  學(xué)

2、 號(hào): 1134120151 </p><p>  專 業(yè): 軟 件 工 程 </p><p>  班 級(jí): 軟工1101B班 </p><p>  指導(dǎo)教師: 王海榮 </p><p>  二0一二 年 十二月</p><p><

3、;b>  目 錄</b></p><p><b>  1.引 言2</b></p><p>  2.設(shè)計(jì)目的與任務(wù)2</p><p><b>  3.設(shè)計(jì)方案2</b></p><p>  3.1總體設(shè)計(jì)2</p><p>  3.2

4、設(shè)計(jì)要求3</p><p>  3.3系統(tǒng)的主要功能3</p><p>  3.4開發(fā)環(huán)境3</p><p>  3.5系統(tǒng)的功能模塊劃分與系統(tǒng)流程圖3</p><p>  3.5.1系統(tǒng)的功能模塊劃分3</p><p>  3.5.2萬年歷模塊流程圖4</p><p> 

5、 3.5.3日記本模塊流程圖5</p><p>  3.6各個(gè)類說明6</p><p>  3.6.1主類NoteBook錯(cuò)誤!未定義書簽。</p><p>  3.6.2記事本Note類6</p><p>  3.6.3左側(cè)面板LeftPane類7</p><p>  3.6.4月份顯示Mont

6、hPane類7</p><p>  3.6.5年月顯示YearMonth類8</p><p>  3.6.6日期獲取DateTime類8</p><p>  3.6.7右側(cè)記事本顯示NotePane類錯(cuò)誤!未定義書簽。</p><p>  3.6.8記事本彈出菜單NotePopupMenu類錯(cuò)誤!未定義書簽。</p&g

7、t;<p>  4.各種功能截圖9</p><p>  5.課程設(shè)計(jì)總結(jié)11</p><p>  6.個(gè)人心得體會(huì)11</p><p><b>  7.附錄11</b></p><p><b>  摘 要</b></p><p>  本課程

8、設(shè)計(jì)通過代碼實(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è)有日歷標(biāo)記的記事本軟件,日記本的設(shè)計(jì)與實(shí)現(xiàn)面板由日歷、記事本、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;

9、圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來顯示當(dāng)前時(shí)間。本軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。</p><p>  關(guān)鍵字:記事本;日歷;</p><p><b>  引 言</b></p><p>  Java是一種純面向?qū)ο蟮?、網(wǎng)絡(luò)編程首選的語言。Java技術(shù)作為軟件開的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之

10、一。為了適應(yīng)時(shí)代潮流,我們應(yīng)該加強(qiáng)對(duì)Java的學(xué)習(xí),更好的掌握這門課程。為此Java課程設(shè)計(jì)決定以“日記本的設(shè)計(jì)與實(shí)現(xiàn)”為設(shè)題材,借此鞏固加深我們對(duì)Java的了解。</p><p>  本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,程序設(shè)計(jì)也不是很復(fù)雜,但在此程序的設(shè)計(jì)過程也是一個(gè)學(xué)習(xí)過程,更是對(duì)復(fù)雜程序的一個(gè)學(xué)習(xí)過程,還能培養(yǎng)我們的數(shù)抽象能力。因此,我們覺得這次課程設(shè)計(jì)是非常有意義的,能為我們今后學(xué)習(xí)面向過程的程序設(shè)計(jì)作一些

11、鋪墊。</p><p><b>  設(shè)計(jì)目的與任務(wù)</b></p><p>  本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過Java程序設(shè)計(jì)的一些重要理論基礎(chǔ)來實(shí)現(xiàn)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的“日歷”和“記事本”的雙重功能。并通過此次課程設(shè)計(jì)的訓(xùn)練,使學(xué)生鞏固和加深對(duì)Java這門課程的理解,通過利用所學(xué)到的計(jì)算科學(xué)的理論知識(shí),提高解決實(shí)際問題的能力,增強(qiáng)運(yùn)算、編程和使用技術(shù)資料

12、的技能,通過實(shí)際問題的分析設(shè)計(jì)、編程和調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。通過這次課程設(shè)計(jì),培養(yǎng)實(shí)事求是、認(rèn)真、嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。</p><p><b>  設(shè)計(jì)方案</b></p><p><b>  總體設(shè)計(jì)</b></p><p>  

13、(1)問題定義:創(chuàng)建日記本的設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片,增加美觀。</p><p>  (2)問題分析:通過對(duì)“日記本的設(shè)計(jì)與實(shí)現(xiàn)”這一題材的分析,我需要四個(gè)類來實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過主類NoteBook創(chuàng)建動(dòng)日記本的設(shè)計(jì)與實(shí)現(xiàn)軟件的主窗口,該類含有main方法,程序從該類開始執(zhí)行。再用余下LeftPane、NotePane類來顯示并改變?nèi)掌诤蛯?shí)現(xiàn)記事

14、本的功能。</p><p> ?。?)研究意義:通過本次課程設(shè)計(jì),我們掌握了Java語言的基本運(yùn)用,提高了理論結(jié)合實(shí)際的能力。 </p><p><b>  設(shè)計(jì)要求 </b></p><p>  (1)日記本使用Java語言開發(fā)設(shè)計(jì)。課程的基本功能包括萬年歷、記事本和輔助功能三個(gè)部分。</p><p>  (2)萬年歷

15、部分由微調(diào)器確定年月,由一組文本框顯示日歷。年月可選擇數(shù)據(jù)符合邏輯,默認(rèn)為當(dāng)前日期。</p><p>  (3)月歷顯示應(yīng)該符合查看習(xí)慣,如星期六和星期日分別用不同顏色表示,當(dāng)日可用特別的字號(hào)和顏色</p><p>  (4)記事本區(qū),記事本內(nèi)容按年月日記錄且保存。</p><p>  (5)微調(diào)器應(yīng)該進(jìn)行事件設(shè)置,以及即時(shí)地顯示該年月的月歷;日期文本框可監(jiān)聽鼠標(biāo)事

16、件,當(dāng)單擊任何一個(gè)日期時(shí),若該日有記事內(nèi)容,則在日記本中顯示該日期的記錄文字;若該日無記錄,記事區(qū)保持空白。</p><p>  (6)日記本應(yīng)該是開放的,內(nèi)容可按日期增減,保存應(yīng)即時(shí),刪除需謹(jǐn)慎刪除記錄時(shí),應(yīng)進(jìn)行對(duì)話框詢問確定。</p><p>  (7)輔助功能包含了日記的導(dǎo)入導(dǎo)出?!皩?dǎo)入”可以將其他日記文件導(dǎo)入合并到當(dāng)前“日記本的設(shè)計(jì)與實(shí)現(xiàn)”的日記本中;“導(dǎo)出”可將“日記本的設(shè)計(jì)與實(shí)

17、現(xiàn)”的所有記錄內(nèi)容按日期為序?qū)С龅揭粋€(gè)文本文件中。為安全起見導(dǎo)出時(shí)需加以安全確認(rèn),要求輸入正確設(shè)定的密碼后才能導(dǎo)出。</p><p>  (8)系統(tǒng)界面外觀和布局,可個(gè)性化設(shè)計(jì),總體原則是“界面簡(jiǎn)潔,操作便捷”。 </p><p><b>  系統(tǒng)的主要功能 </b></p><p>  (1)可以對(duì)個(gè)人日志進(jìn)行保存、刪除、導(dǎo)入和導(dǎo)出;<

18、/p><p>  (2)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ;</p><p>  (3)可以顯示當(dāng)前日期。</p><p><b>  開發(fā)環(huán)境</b></p><p>  Windows XP;jdk1.5.0_16,Eclipse。 </p><p>  系統(tǒng)的功能模塊劃

19、分與系統(tǒng)流程圖</p><p><b>  系統(tǒng)的功能模塊劃分</b></p><p>  本日歷記事本共有11個(gè)java源文件。</p><p>  NoteBook.java</p><p>  該java文件生成的類負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口。該類含有main方法,程序從該類開始執(zhí)行。</p>&

20、lt;p>  leftPane.java</p><p>  該文件負(fù)責(zé)創(chuàng)建創(chuàng)建左側(cè)面板。</p><p>  NotePane.java</p><p>  該文件負(fù)責(zé)創(chuàng)建右側(cè)面板、在文本框上彈出快捷菜單、創(chuàng)建日記文本</p><p>  DateTime.java</p><p>  該文件獲得系統(tǒng)當(dāng)前的日期

21、,包括年月日</p><p>  YearMonth.java</p><p>  該文件負(fù)責(zé)創(chuàng)建管理年份和月份的對(duì)象。</p><p>  MonthPane.java</p><p>  該文件負(fù)責(zé)生成日歷創(chuàng)建日歷</p><p>  類模塊圖如圖3-1所示.</p><p><b&g

22、t;  萬年歷模塊流程圖</b></p><p>  萬年歷流程圖如圖3-2所示</p><p><b>  萬年歷</b></p><p>  按鈕 選擇日期</p><p>  正確輸入錯(cuò)誤輸入</p><p><b>  改變當(dāng)天日期</b&g

23、t;</p><p><b>  當(dāng)天是否有日記?</b></p><p><b>  有無</b></p><p><b>  更改記事本顯示</b></p><p><b>  日記本模塊流程圖</b></p><p&g

24、t;  日記本流程圖如圖3-3所示.</p><p><b>  顯示日記本</b></p><p>  保存 刪除 導(dǎo)入 導(dǎo)出</p><p>  以當(dāng)前日期為值, 如果當(dāng)前TreeMap打開文件對(duì) 打開保存文件</p><p>  當(dāng)前內(nèi)容為值保 有今天的記錄

25、就話框,如果選擇 對(duì)話框,保存</p><p>  存到TreeMap中 刪除它了文件就導(dǎo)入 到所選路徑下</p><p><b>  各個(gè)類說明</b></p><p>  記事本NoteBook類</p><p><b>  1.成員變量</b></p>&l

26、t;p><b>  表3-1</b></p><p><b>  2.方法</b></p><p><b>  表3-2</b></p><p>  記事本NotePane類</p><p><b>  1、成員變量</b></p>&

27、lt;p><b>  表3-3</b></p><p><b>  2、方法</b></p><p><b>  表3-4</b></p><p>  左側(cè)面板LeftPane類</p><p><b>  1.成員變量</b></p>

28、<p><b>  表3-5</b></p><p><b>  2.方法</b></p><p><b>  表3-6</b></p><p>  月份顯示MonthPane類</p><p><b>  1.成員變量</b></p&g

29、t;<p><b>  表3-7</b></p><p><b>  2.方法</b></p><p><b>  表3-8</b></p><p>  年月顯示YearMonth類</p><p><b>  1.成員變量</b></

30、p><p><b>  表3-9</b></p><p><b>  2.方法</b></p><p><b>  表3-10</b></p><p><b>  表3-11</b></p><p>  日期獲取DateTime類<

31、;/p><p><b>  1.成員變量</b></p><p><b>  表3-13</b></p><p><b>  2.方法</b></p><p><b>  表3-14</b></p><p><b>  4、各

32、種功能截圖</b></p><p><b>  主界面</b></p><p><b>  保存日記</b></p><p><b>  刪除日記</b></p><p><b>  導(dǎo)入日志</b></p><p>&

33、lt;b>  導(dǎo)出日記</b></p><p><b>  課程設(shè)計(jì)總結(jié)</b></p><p>  通過本次課程設(shè)計(jì)的練習(xí),我才知道我對(duì)知識(shí)的掌握是多么的不熟悉,太多東西我都不知道,最主要的是我練的太少了,太多都不熟悉,Java的學(xué)習(xí)不是看看就會(huì)的,最最主要的是多練。這次的課程設(shè)計(jì)為我敲響了警鐘,在以后的學(xué)習(xí)中一定要多多練習(xí),鍛煉自己的獨(dú)立思考能力

34、,和團(tuán)隊(duì)意識(shí),為以后的工作打好基礎(chǔ)。</p><p><b>  6、個(gè)人心得體會(huì)</b></p><p>  “紅花雖好,也要綠葉相持”,同樣,只有理論是遠(yuǎn)遠(yuǎn)不夠的,理論還需要用實(shí)踐來證明。課程設(shè)計(jì)培養(yǎng)學(xué)會(huì)的多方面的能力,獨(dú)立思考、對(duì)知識(shí)的掌握、解決問題的能力等,我現(xiàn)在做的只是一個(gè)小小的程序設(shè)計(jì)而已,以后會(huì)有更大的軟件需要去做,也不是我一個(gè)人能完成的,所以團(tuán)隊(duì)意識(shí)也

35、是很重要的。</p><p><b>  7、附錄</b></p><p><b>  源程序代碼</b></p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import jav

36、a.io.*;</p><p>  import java.util.*;</p><p>  import javax.swing.*;</p><p>  import javax.swing.event.*;</p><p>  class NoteBook extends JFrame implements ChangeListene

37、r,MouseListener{</p><p>  int year,month,day;</p><p>  Calendar c;</p><p>  int first,days;</p><p>  LeftPane lp;</p><p>  NotePane np;</p><p>

38、;  public NoteBook(){</p><p>  super("日記本的設(shè)計(jì)與實(shí)現(xiàn)");</p><p>  this.setDefaultCloseOperation(3);</p><p>  Container con=getContentPane();</p><p>  bookInit();<

39、;/p><p>  addEvent();</p><p>  add(lp,"West");</p><p><b>  add(np);</b></p><p>  this.setBounds( 50, 20,1000,650);</p><p>  this.setResi

40、zable(true); </p><p>  this.setVisible(true);</p><p><b>  }</b></p><p>  void bookInit(){</p><p>  lp=new LeftPane();</p><p>  np=new NotePane(

41、);</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p><b>  }</b></p><p>  void addEve

42、nt(){</p><p>  lp.ym.showMonth.addChangeListener(this);</p><p>  lp.ym.showYear.addChangeListener(this);</p><p>  for(int i=0;i<lp.mp.showDay.length;i++){</p><p>  l

43、p.mp.showDay[i].addMouseListener(this);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void stateChanged(ChangeEvent e){</p><p>  month=Int

44、eger.parseInt(lp.ym.showMonth.getValue().toString());</p><p>  year=Integer.parseInt(lp.ym.showYear.getValue().toString());</p><p>  noteBookRefresh();</p><p><b>  }</b>

45、</p><p>  void noteBookRefresh(){</p><p>  np.refreshContent(year,month,day);</p><p>  np.setDateInfo(year,month,day);</p><p>  lp.mp.arrangeNum(year,month,day);</p&

46、gt;<p><b>  }</b></p><p>  public void mouseClicked(MouseEvent e){</p><p>  JTextField source=(JTextField)e.getSource();</p><p><b>  try{</b></p>

47、;<p>  day=Integer.parseInt(source.getText());</p><p>  noteBookRefresh();</p><p><b>  }</b></p><p>  catch(Exception ee){}</p><p><b>  }</b

48、></p><p>  public void mousePressed(MouseEvent e) {}</p><p>  public void mouseReleased(MouseEvent e){}</p><p>  public void mouseEntered(MouseEvent e){}</p><p>  pu

49、blic void mouseExited(MouseEvent e){}</p><p>  class YearMonth extends JPanel{</p><p>  private int year;</p><p>  private int month;</p><p>  private JLabel yl;</p&

50、gt;<p>  private JLabel ml;</p><p>  JSpinner showYear;//微調(diào)按鈕</p><p>  JSpinner showMonth;</p><p>  YearMonth(){</p><p><b>  ymInit();</b></p>

51、<p>  add(yl);add(showYear);</p><p>  add(ml);add(showMonth);</p><p><b>  }</b></p><p>  void ymInit(){</p><p>  yl=new JLabel("年");</p&g

52、t;<p>  ml=new JLabel("月");</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  showYear = new JSpinner(new SpinnerNumberModel(year,0,100

53、00,1));</p><p>  showYear.setEditor(new JSpinner.NumberEditor(showYear, "0000"));</p><p>  showYear.setPreferredSize(new Dimension(60, 30));</p><p>  yl.setFont(new Font(&

54、quot;TimesRomn",Font.BOLD,16));</p><p>  showMonth=new JSpinner(new SpinnerNumberModel(month,1,12,1));</p><p>  showYear.setPreferredSize(new Dimension(60, 30));</p><p>  ml.se

55、tFont(new Font("TimesRomn",Font.BOLD,16));</p><p><b>  }</b></p><p><b>  }</b></p><p>  static class DateTime{</p><p>  static Calenda

56、r today=Calendar.getInstance();</p><p>  static int getYear(){</p><p>  return today.get(today.YEAR);</p><p><b>  }</b></p><p>  static int getMonth(){</

57、p><p>  return today.get(today.MONTH)+1;</p><p><b>  }</b></p><p>  static int getDay(){</p><p>  return today.get(today.DAY_OF_MONTH);</p><p><

58、;b>  }</b></p><p>  static int getMonDay(int year,int month){</p><p>  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){</p><p>  return 31;</p

59、><p><b>  }</b></p><p>  else if(month==4||month==6||month==9||month==11){</p><p>  return 30;</p><p><b>  }</b></p><p>  if((year%4==

60、0&&year%100!=0)||year%400==0){</p><p>  return 29;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  return 28;</p><p><b

61、>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class LeftPane extends JPanel{</p><p>  YearMonth ym;</p><p>  Month

62、Pane mp;</p><p>  JLabel tupian;</p><p>  JPanel lp;</p><p>  JSplitPane split;</p><p>  LeftPane(){</p><p>  super(new BorderLayout());</p><p&

63、gt;  tupian=new JLabel(new ImageIcon("a.jpg"));</p><p>  ym=new YearMonth();</p><p>  mp=new MonthPane();</p><p>  lp=new JPanel(new BorderLayout());</p><p> 

64、 lp.add(ym,"South");</p><p>  lp.add(mp);</p><p>  lp.add(tupian,"North");</p><p>  split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);</p><p>  this

65、.add(lp);</p><p>  this.add(split,"East");</p><p><b>  } </b></p><p><b>  }</b></p><p>  class MonthPane extends JPanel{</p>

66、<p>  JTextField showDay[];</p><p>  int first,days;</p><p>  YearMonth ym;</p><p>  String[] week;</p><p>  JLabel[] title;</p><p>  int year,month,

67、day;</p><p>  MonthPane(){</p><p>  super(new GridLayout(7,7,3,3));</p><p><b>  mcInit();</b></p><p>  for(int i=0;i<7;i++)</p><p>  add(tit

68、le[i]);</p><p>  for(int i=0;i<42;i++)</p><p>  add(showDay[i]);</p><p>  arrangeNum(year,month,day);</p><p><b>  }</b></p><p>  void mcInit

69、(){</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p>  String week[]={"日","一","二&qu

70、ot;,"三","四","五","六"};</p><p>  title=new JLabel[7];</p><p>  for(int j=0;j<7;j++){</p><p>  title[j]=new JLabel();</p><p>  t

71、itle[j].setText(week[j]);</p><p>  title[j].setBorder(BorderFactory.createEmptyBorder());</p><p>  title[j].setFont(new Font("",1,18));</p><p><b>  }</b></p

72、><p>  title[0].setForeground(Color.red);</p><p>  title[6].setForeground(Color.blue);</p><p>  showDay=new JTextField[42];</p><p>  for(int i=0;i<42;i++){</p>&

73、lt;p>  showDay[i]=new JTextField();</p><p>  showDay[i].setFont(new Font("",0,14));</p><p>  showDay[i].setEditable(false);</p><p><b>  }</b></p><

74、;p><b>  }</b></p><p>  public void arrangeNum(int year,int month,int day){</p><p>  days=DateTime.getMonDay(year,month);</p><p>  Calendar c=Calendar.getInstance();&

75、lt;/p><p>  c.set(year,month-1,1);</p><p>  first=c.get(Calendar.DAY_OF_WEEK)-1;</p><p>  if(first!=0){</p><p>  for(int i=0;i<first;i++){</p><p>  showDay

76、[i].setText("");</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(int i=first,n=1;i<first+days;i++,n++){</p><p>  showDay[i].setTex

77、t(""+n);</p><p>  int r=i+1;</p><p>  if(n==day){</p><p>  if(r%7==0||(r+6)%7==0){</p><p>  showDay[i].setForeground(Color.blue);</p><p>  showDa

78、y[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b>  }</b></p><p><b>  else{</b></p><p>  showDay[i].setForeground(Color.green);</p>

79、;<p>  showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else{</b></p&

80、gt;<p>  showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));</p><p>  showDay[i].setForeground(Color.black);</p><p><b>  }</b></p><p>  if(i%7==0){

81、</p><p>  showDay[i].setForeground(Color.red);</p><p><b>  }</b></p><p>  if(i%7==6){</p><p>  showDay[i].setForeground(Color.blue);</p><p><

82、;b>  }</b></p><p><b>  }</b></p><p>  if(first+days<41){</p><p>  for(int i=first+days;i<42;i++){</p><p>  showDay[i].setText("");&

83、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //時(shí)鐘顯示</b>&

84、lt;/p><p>  class TimeLabel extends JLabel implements Runnable{</p><p>  TimeLabel(){</p><p>  this.setFont(new Font("",1,20));</p><p>  this.setForeground(Color

85、.red);</p><p>  new Thread(this).start();</p><p><b>  }</b></p><p>  public String getTime(){</p><p>  Calendar now=Calendar.getInstance();//取得系統(tǒng)時(shí)間 </p&g

86、t;<p><b>  int hour;</b></p><p>  int minute;</p><p>  int second;</p><p>  String timeInfo;</p><p>  hour=now.get(now.HOUR_OF_DAY);</p><p

87、>  minute=now.get(now.MINUTE);</p><p>  second=now.get(now.SECOND);</p><p>  if(hour<=9)</p><p>  timeInfo="0"+hour+":";</p><p><b>  els

88、e</b></p><p>  timeInfo=hour+":";</p><p>  if(minute<=9)</p><p>  timeInfo= timeInfo+"0"+minute+":";</p><p><b>  else</b

89、></p><p>  timeInfo= timeInfo+minute+":";</p><p>  if(second<=9)</p><p>  timeInfo= timeInfo+"0"+second;</p><p><b>  else</b></

90、p><p>  timeInfo= timeInfo+second;</p><p>  return timeInfo;</p><p><b>  }</b></p><p>  public void run(){</p><p>  while(true) //線程的運(yùn)行(隔一秒刷新)循環(huán)顯示

91、</p><p><b>  { try</b></p><p>  {this.setText(this.getTime());</p><p>  Thread.sleep(1000);</p><p><b>  }</b></p><p>  catch (Excep

92、tion e) {}</p><p><b>  }}</b></p><p><b>  }</b></p><p>  class NotePane extends JPanel implements ActionListener,MouseListener{</p><p>  p

93、rivate int year,month,day;</p><p>  private JTextArea note;</p><p>  private JButton save,delete,input,export;</p><p>  private Hashtable table;</p><p>  private JLabel

94、 dateInfo ;</p><p>  private File file;</p><p>  private JPanel buttonPane;</p><p>  private JMenuItem copy;</p><p>  private JMenuItem cut;</p><p>  priv

95、ate JMenuItem paste;</p><p>  private JPopupMenu f;</p><p>  JPanel p=new JPanel();</p><p>  NotePane(){</p><p>  super(new BorderLayout());</p><p>  noteI

96、nit();</p><p>  buttonInit();</p><p>  addEvent();</p><p>  p.add(dateInfo);</p><p>  p.add(new TimeLabel());</p><p>  add(p,"North");</p>

97、<p>  add(new JScrollPane(note));</p><p>  add(buttonPane,"South");</p><p>  refreshContent(year,month,day);</p><p><b>  }</b></p><p>  priv

98、ate void noteInit(){</p><p>  year=DateTime.getYear();</p><p>  month=DateTime.getMonth();</p><p>  day=DateTime.getDay();</p><p>  dateInfo=new JLabel(year+" 年 &q

99、uot;+month+" 月 "+day+" 日 ",JLabel.CENTER);</p><p>  dateInfo.setFont(new Font("TimesRomn",Font.BOLD,16));</p><p>  dateInfo.setForeground(Color.BLUE);</p>&l

100、t;p>  table=new Hashtable();</p><p>  file=new File("Note.txt");</p><p>  initFile();</p><p>  note=new JTextArea();</p><p>  note.setFont(new Font("&

101、quot;,0,14));</p><p>  note.setLineWrap(true);</p><p><b>  }</b></p><p>  private void buttonInit(){</p><p>  f=new JPopupMenu();</p><p>  cut=

102、new JMenuItem("剪切");</p><p>  copy=new JMenuItem("復(fù)制");</p><p>  paste=new JMenuItem("粘貼");</p><p>  save=new JButton("保存日記") ;</p>&l

103、t;p>  delete=new JButton("刪除日記");</p><p>  input=new JButton("導(dǎo)入日記");</p><p>  export=new JButton("導(dǎo)出日記");</p><p>  buttonPane=new JPanel(new FlowLa

104、yout());</p><p>  buttonPane.add(save);</p><p>  buttonPane.add(delete);</p><p>  buttonPane.add(input);</p><p>  buttonPane.add(export);</p><p>  f.add(cu

105、t);</p><p>  f.add(copy);</p><p>  f.add(paste);</p><p><b>  }</b></p><p>  private void addEvent(){</p><p>  save.addActionListener(this);<

106、/p><p>  delete.addActionListener(this);</p><p>  input.addActionListener(this);</p><p>  export.addActionListener(this);</p><p>  cut.addActionListener(this);</p>

107、<p>  copy.addActionListener(this); </p><p>  paste.addActionListener(this);</p><p>  note.addMouseListener(this);</p><p><b>  }</b></p><p>  pr

108、ivate void initFile(){</p><p>  if(!file.exists()){</p><p><b>  try{</b></p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStre

109、am objectOut=new ObjectOutputStream(out);</p><p>  objectOut.writeObject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p><b>  }</b></p&g

110、t;<p>  catch(IOException e) {}</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e){</p><p>  if(e.ge

111、tSource()==save)</p><p>  save(year,month,day);</p><p>  else if(e.getSource()==delete)</p><p>  delete(year,month,day);</p><p>  else if(e.getSource()==input)</p>

112、;<p><b>  input();</b></p><p>  else if(e.getSource()==export)</p><p><b>  export();</b></p><p>  else if(e.getSource()==cut)</p><p>  n

113、ote.cut();</p><p>  else if(e.getSource()==copy)</p><p>  note.copy();</p><p>  else if(e.getSource()==paste)</p><p>  note.paste();</p><p><b>  }<

114、;/b></p><p>  public void setDateInfo(int _y,int _m,int _d){</p><p>  this.year=_y;</p><p>  this.month=_m;</p><p>  this.day=_d;</p><p>  dateInfo.setT

115、ext(_y+" 年 "+_m+" 月 "+_d+" 日");</p><p><b>  }</b></p><p>  public String getDateKey(){</p><p>  String s=""+year;</p><

116、p>  if(month<10)s+="/0"+month;</p><p>  else s+="/"+month;</p><p>  if(day<10)s+="/0"+day;</p><p>  else s+="/"+day;</p><

117、p><b>  return s;</b></p><p><b>  }</b></p><p>  public void refreshContent(int year,int month,int day){</p><p>  String key=this.getDateKey();</p>

118、<p><b>  try{</b></p><p>  FileInputStream in1=new FileInputStream(file);</p><p>  ObjectInputStream in2=new ObjectInputStream(in1);</p><p>  table=(Hashtable)in2.r

119、eadObject();</p><p>  in1.close();</p><p>  in2.close();</p><p><b>  }</b></p><p>  catch(Exception ee) {}</p><p>  if(table.containsKey(key))&

120、lt;/p><p>  note.setText(table.get(key)+"");</p><p><b>  else</b></p><p>  note.setText("");</p><p><b>  }</b></p><p

121、>  public void save(int year,int month,int day){</p><p>  String logContent=note.getText();</p><p>  String key=this.getDateKey();</p><p><b>  try{</b></p><

122、;p>  table.put(key,logContent);</p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p>  objectOut.wr

123、iteObject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p><b>  }</b></p><p>  catch(Exception ee) {}</p><p>  JOptionPane.show

124、MessageDialog(null,key+"當(dāng)天的日記已成功保存!");</p><p><b>  }</b></p><p>  public void delete(int year,int month,int day){</p><p>  String key=this.getDateKey();</p&

125、gt;<p>  if(table.containsKey(key)){</p><p>  JOptionPane jo=new JOptionPane();</p><p>  int x= jo.showConfirmDialog(null,"要?jiǎng)h除"+year+"年"+month+"月"+day+"

126、日"+"的記錄嗎?", "!!!", JOptionPane.YES_NO_OPTION);</p><p>  if(x==jo.YES_OPTION){</p><p><b>  try{</b></p><p>  FileInputStream in1=new FileInputStr

127、eam(file);</p><p>  ObjectInputStream in2=new ObjectInputStream(in1);</p><p>  table=(Hashtable)in2.readObject();</p><p>  in1.close();</p><p>  in2.close();</p>

128、<p>  table.remove(key);</p><p>  FileOutputStream out=new FileOutputStream(file);</p><p>  ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p>  objectOut.writeO

129、bject(table);</p><p>  objectOut.close();</p><p>  out.close();</p><p>  note.setText("");</p><p><b>  }</b></p><p>  catch(Exception

130、 ee) {}</p><p><b>  }</b></p><p><b>  else{</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b> 

131、 }</b></p><p><b>  else{</b></p><p>  String m=""+year+"年"+month+"月"+day+"日"+"是空的";</p><p>  JOptionPane.showMess

132、ageDialog(this,m,"look!",JOptionPane.WARNING_MESSAGE);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void export(){</p><p>  Str

133、ing pass=JOptionPane.showInputDialog("導(dǎo)出前請(qǐng)輸入你的密碼?");</p><p>  if(!pass.equals("1134120151")){</p><p>  JOptionPane.showMessageDialog(new JDialog(),"抱歉,你的密碼不正確不能導(dǎo)出!"

134、);return;</p><p><b>  }</b></p><p>  TreeMap map=new TreeMap(table);</p><p>  Set mapping=map.entrySet();</p><p>  File newfile=new File("日歷記事本1.txt&qu

135、ot;);</p><p><b>  try{</b></p><p>  PrintWriter out=new PrintWriter( newfile );</p><p>  for(Iterator i=mapping.iterator();i.hasNext();){</p><p>  Map.Entry

136、 me=(Map.Entry)i.next();</p><p>  out.println(me.getKey());</p><p>  out.println(me.getValue()+"\n\r" );</p><p><b>  }</b></p><p>  out.close();&l

溫馨提示

  • 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)論