JAVA記事本的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
JAVA記事本的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
JAVA記事本的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
JAVA記事本的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
JAVA記事本的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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)介

/《面對(duì)對(duì)象程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告題目:《日記本的設(shè)計(jì)和實(shí)現(xiàn)》課程設(shè)計(jì)學(xué)院:信息工程姓名:xxxx學(xué)號(hào):1134120131專(zhuān)業(yè):軟件工程班級(jí):軟工1101班指導(dǎo)老師:xxxx二0一二年十二月十四日目錄1. 引言 32. 設(shè)計(jì)目的和任務(wù) 43. 設(shè)計(jì)方案 53.1 總體設(shè)計(jì) 53.2 設(shè)計(jì)要求 53.3 系統(tǒng)的主要功能 53.4 開(kāi)發(fā)環(huán)境 53.5 系統(tǒng)的功能模塊劃分和系統(tǒng)流程圖 6 系統(tǒng)的功能模塊劃分 6 萬(wàn)年歷模塊流程圖 7 日記本模塊流程圖 73.6 各個(gè)類(lèi)說(shuō)明 7 主類(lèi)NoteBook 7 記事本Note類(lèi) 8 左側(cè)面板LeftPane類(lèi) 9 月份顯示MonthPane類(lèi) 9 年月顯示YearMonth類(lèi) 9 背景音樂(lè)Music類(lèi) 10 日期獲得DateTime類(lèi) 10 右側(cè)記事本顯示NotePane類(lèi) 11 記事本彈出菜單NotePopupMenu類(lèi) 114. 各種功能截圖 125. 課程設(shè)計(jì)總結(jié) 156. 個(gè)人心得體會(huì) 167. 附錄 17摘要本課程設(shè)計(jì)通過(guò)代碼實(shí)現(xiàn)將理論學(xué)問(wèn)和詳細(xì)實(shí)踐相結(jié)合,鞏固提高了對(duì)JAVA的相關(guān)方法和概念的理解,使學(xué)生的發(fā)散思維及動(dòng)手實(shí)力進(jìn)一步加強(qiáng),加強(qiáng)對(duì)計(jì)算機(jī)及軟件工程的進(jìn)一步了解。在這個(gè)課程設(shè)計(jì)中,做成了一個(gè)有日歷標(biāo)記的記事本軟件,日記本面板由日歷、記事本、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有相應(yīng)提示;圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來(lái)顯示當(dāng)前時(shí)間。本軟件是一個(gè)好用性較強(qiáng),簡(jiǎn)潔,美觀,便利的功能軟件。關(guān)鍵字:記事本;日歷;1引言Java是一種純面對(duì)對(duì)象的、網(wǎng)絡(luò)編程首選的語(yǔ)言。Java技術(shù)作為軟件開(kāi)的一種革命性技術(shù),已被列為當(dāng)今世界信息技術(shù)的主流之一。為了適應(yīng)時(shí)代潮流,我們應(yīng)當(dāng)加強(qiáng)對(duì)Java的學(xué)習(xí),更好的駕馭這門(mén)課程。為此Java課程設(shè)計(jì)確定以“寫(xiě)字留痕”為設(shè)題材,借此鞏固加深我們對(duì)Java的了解。本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)潔,程序設(shè)計(jì)也不是很困難,但在此程序的設(shè)計(jì)過(guò)程也是一個(gè)學(xué)習(xí)過(guò)程,更是對(duì)困難程序的一個(gè)學(xué)習(xí)過(guò)程,還能培育我們的數(shù)抽象實(shí)力。因此,我們覺(jué)得這次課程設(shè)計(jì)是特別有意義的,能為我們今后學(xué)習(xí)面對(duì)過(guò)程的程序設(shè)計(jì)作一些鋪墊。2設(shè)計(jì)目的和任務(wù)本課程設(shè)計(jì)所要求達(dá)到的目的和任務(wù):通過(guò)Java程序設(shè)計(jì)的一些重要理論基礎(chǔ)來(lái)實(shí)現(xiàn)“日記本”的“日歷”和“記事本”的雙重功能。并通過(guò)此次課程設(shè)計(jì)的訓(xùn)練,使學(xué)生鞏固和加深對(duì)Java這門(mén)課程的理解,通過(guò)利用所學(xué)到的計(jì)算科學(xué)的理論學(xué)問(wèn),提高解決實(shí)際問(wèn)題的實(shí)力,增加運(yùn)算、編程和運(yùn)用技術(shù)資料的技能,通過(guò)實(shí)際問(wèn)題的分析設(shè)計(jì)、編程和調(diào)試,駕馭應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法,能正確闡述設(shè)計(jì)和試驗(yàn)結(jié)果。通過(guò)這次課程設(shè)計(jì),培育實(shí)事求是、仔細(xì)、嚴(yán)謹(jǐn)?shù)目茖W(xué)看法和刻苦鉆研不斷創(chuàng)新的精神,逐步建立正確的全局觀念。3設(shè)計(jì)方案總體設(shè)計(jì)(1)問(wèn)題定義:創(chuàng)建日記本,實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能顯示設(shè)置的圖片,增加美觀。(2)問(wèn)題分析:通過(guò)對(duì)“日記本的設(shè)計(jì)和實(shí)現(xiàn)”這一題材的分析,我須要四個(gè)類(lèi)來(lái)實(shí)現(xiàn)其“日歷”和“記事本”這兩大功能。通過(guò)主類(lèi)CalendWindow創(chuàng)建動(dòng)寫(xiě)字留痕軟件的主窗口,該類(lèi)含有main方法,程序從該類(lèi)起先執(zhí)行。再用余下CalendarPad、CalendarMessage、NotePad類(lèi)來(lái)顯示并變更日期和實(shí)現(xiàn)記事本的功能。而CalendarImage類(lèi)用來(lái)顯示圖片。(3)探討意義:通過(guò)本次課程設(shè)計(jì),我們駕馭了Java語(yǔ)言的基本運(yùn)用,提高了理論結(jié)合實(shí)際的實(shí)力。設(shè)計(jì)要求(1)日記本運(yùn)用Java語(yǔ)言開(kāi)發(fā)設(shè)計(jì)。課程的基本功能包括萬(wàn)年歷、記事本和協(xié)助功能三個(gè)部分。(2)萬(wàn)年歷部分由微調(diào)器確定年月,由一組文本框顯示日歷。年月可選擇數(shù)據(jù)符合邏輯,默認(rèn)為當(dāng)前日期。(3)月歷顯示應(yīng)當(dāng)符合查看習(xí)慣,如星期六和星期日分別用不同顏色表示,當(dāng)日可用特殊的字號(hào)和顏色(4)記事本區(qū),記事本內(nèi)容按年月日記錄且保存。(5)微調(diào)器應(yīng)當(dāng)進(jìn)行事務(wù)設(shè)置,以及即時(shí)地顯示該年月的月歷;日期文本框可監(jiān)聽(tīng)鼠標(biāo)事務(wù),當(dāng)單擊任何一個(gè)日期時(shí),若該日有記事內(nèi)容,則在日記本中顯示該日期的記錄文字;若該日無(wú)記錄,記事區(qū)保持空白。(6)日記本應(yīng)當(dāng)是開(kāi)放的,內(nèi)容可按日期增減,保存應(yīng)即時(shí),刪除需謹(jǐn)慎刪除記錄時(shí),應(yīng)進(jìn)行對(duì)話框詢(xún)問(wèn)確定。(7)協(xié)助功能包含了日記的導(dǎo)入導(dǎo)出?!皩?dǎo)入”可以將其他日記文件導(dǎo)入合并到當(dāng)前“寫(xiě)字留痕”的日記本中;“導(dǎo)出”可將“寫(xiě)字留痕”的全部記錄內(nèi)容按日期為序?qū)С龅揭粋€(gè)文本文件中。為平安起見(jiàn)導(dǎo)出時(shí)需加以平安確認(rèn),要求輸入正確設(shè)定的密碼后才能導(dǎo)出。(8)系統(tǒng)界面外觀和布局,可特性化設(shè)計(jì),總體原則是“界面簡(jiǎn)潔,操作便捷”。系統(tǒng)的主要功能(1)可以對(duì)個(gè)人日志進(jìn)行保存、刪除、導(dǎo)入和導(dǎo)出;(2)可以便利地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志;(3)可以顯示當(dāng)前日期。開(kāi)發(fā)環(huán)境WindowsXP;jdk1.6.0;eclipse編輯器。系統(tǒng)的功能模塊劃分和系統(tǒng)流程圖系統(tǒng)的功能模塊劃分本日歷記事本共有9個(gè)java源文件。NoteBook.java該java文件生成的類(lèi)負(fù)責(zé)創(chuàng)建本日歷記事本程序主窗口。該類(lèi)含有main方法,程序從該類(lèi)起先執(zhí)行。Note.java該文件負(fù)責(zé)創(chuàng)建日記文本leftPane.java該文件負(fù)責(zé)創(chuàng)建創(chuàng)建左側(cè)面板。NotePade.java該文件負(fù)責(zé)創(chuàng)建右側(cè)面板。NotePopupMenu.java該文件負(fù)責(zé)在文本框上彈出快捷菜單DateTime.java該文件獲得系統(tǒng)當(dāng)前的日期,包括年月日YearMonth.java該文件負(fù)責(zé)創(chuàng)建管理年份和月份的對(duì)象。MonthPane.java該文件負(fù)責(zé)生成日歷創(chuàng)建日歷Music.java該文件負(fù)責(zé)創(chuàng)添加背景音樂(lè)NoteBookNoteBookleftPaneMusicMonthPaneYearMonthPaneDateTimeNotePaneNoteNotePopupMenuPane萬(wàn)年歷模塊流程圖 萬(wàn)年歷 選擇微調(diào)按鈕 選擇日期 正確輸入 錯(cuò)誤輸入 變更當(dāng)天日期 當(dāng)天是否有日記? 有 無(wú) 更改記事本顯示 日記本模塊流程圖 顯示日記本 保存 刪除 導(dǎo)入 導(dǎo)出以當(dāng)前日期為值,假如當(dāng)前TreeMap 打開(kāi)打開(kāi)文件對(duì)打開(kāi)保存文件當(dāng)前內(nèi)容為值保有今日的記錄就 話框,假如選擇對(duì)話框,保存存到TreeMap中刪除它 了文件就導(dǎo)入 到所選路徑下各個(gè)類(lèi)說(shuō)明主類(lèi)NoteBook1.成員變量成員變量描述變量類(lèi)型名稱(chēng)年、月、日intyear,month,day日歷對(duì)象Calendarc左側(cè)日歷面板LeftPanenotepad記事本面板NotePane負(fù)責(zé)變更月圖標(biāo)Image負(fù)責(zé)主窗口標(biāo)題欄圖標(biāo)的顯示2.方法名稱(chēng)功能備注NoteBook創(chuàng)建窗口主程序構(gòu)造方法bookInit變量初始化addEvent年月微調(diào)按鈕事務(wù)noteBookRefresh刷新ymListener年月變更事務(wù)監(jiān)聽(tīng)main程序起先運(yùn)行記事本Note類(lèi)1、成員變量描述變量類(lèi)型名稱(chēng)文本輸入?yún)^(qū)JTextAreatext保存、刪除日志的按鈕Button保存日志、刪除日志保存日志的散列表Hashtabletable保存散列表的文件Filefile記錄日志的人年、月、日intyear,month,day2、方法名稱(chēng)功能備注NotaPad創(chuàng)建記事本對(duì)象構(gòu)造方法setYear設(shè)置年份getYear獲得年份setMonth設(shè)置月份getMonth獲得月份setDay設(shè)置日期getDay獲得日期獲得日志內(nèi)容獲得日志內(nèi)容保存日志保存日志刪除日志刪除日志actionPerformed處理ActionEvent事務(wù)接口方法左側(cè)面板LeftPane類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注月份顯示MonthPane類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注年月顯示YearMonth類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注背景音樂(lè)Music類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注日期獲得DateTime類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注右側(cè)記事本顯示NotePane類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注記事本彈出菜單NotePopupMenu類(lèi)1.成員變量描述變量類(lèi)型名稱(chēng)2.方法名稱(chēng)功能備注4各種功能截圖主界面保存日記刪除日志導(dǎo)入日志導(dǎo)出日志導(dǎo)出前要輸入密碼密碼不正確不能導(dǎo)出密碼正確可以指定文件名導(dǎo)出5課程設(shè)計(jì)總結(jié)這次課程設(shè)計(jì)的主要目的是學(xué)會(huì)Java程序開(kāi)發(fā)的環(huán)境搭建和配置,并在實(shí)際運(yùn)用中學(xué)習(xí)和駕馭Java程序開(kāi)發(fā)的全過(guò)程,以及進(jìn)一步熟識(shí)駕馭Java程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)內(nèi)容,提高Java編程技術(shù)以及分析解決問(wèn)題的綜合實(shí)力。通過(guò)這次課程設(shè)計(jì),我基本駕馭了以上要求。由于專(zhuān)業(yè)學(xué)問(wèn)有限,以及動(dòng)手實(shí)力的欠缺,所以開(kāi)發(fā)的系統(tǒng)不是很完善,有一些功能未實(shí)現(xiàn),但是萬(wàn)年歷記事本的基本功能均已實(shí)現(xiàn)。這個(gè)課程設(shè)計(jì)使我鞏固了Java語(yǔ)言的學(xué)問(wèn),對(duì)于Eclipse開(kāi)發(fā)工具也有了肯定的了解。由于是第一次進(jìn)行Java語(yǔ)言開(kāi)發(fā),所以不足之處不行避開(kāi)。本系統(tǒng)的統(tǒng)計(jì)功能還不夠強(qiáng)大,背景音樂(lè),還有日歷的陰歷,節(jié)氣都沒(méi)實(shí)現(xiàn),將在以后的時(shí)間,接著完善。6個(gè)人心得體會(huì)Java課程設(shè)計(jì)很快就結(jié)束了,雖然每天都熬到深夜,但卻讓我過(guò)得很充溢,獲益非淺。通過(guò)這次課程設(shè)計(jì),我懂得了只有堅(jiān)持才會(huì)有成就?;仡櫰鸫苏n程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說(shuō)得是苦多于甜,但是可以學(xué)到許多許多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的學(xué)問(wèn),而且學(xué)到了許多在書(shū)本上所沒(méi)有學(xué)到過(guò)的學(xué)問(wèn)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論和實(shí)際相結(jié)合是很重要的,只有理論學(xué)問(wèn)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論學(xué)問(wèn)和實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正提高自己的實(shí)際動(dòng)手實(shí)力和獨(dú)立思索的實(shí)力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,但可喜的是最終都得到了解決。7附錄AYearMonth.java源程序代碼importjava.awt.*;importjavax.swing.*;publicclassYearMonthextendsJPanel{ privateintyear; privateintmonth; privateJLabelyl; privateJLabelml; JSpinnershowYear; JSpinnershowMonth;SpinnerNumberModelyearModel,monthModel; YearMonth(){ ymInit(); add(yl);add(showYear); add(ml);add(showMonth); } voidymInit(){ yl=newJLabel("年"); ml=newJLabel("月"); year=DateTime.getYear(); month=DateTime.getMonth(); yearModel=newSpinnerNumberModel(year,0,10000,1); showYear=newJSpinner(yearModel); showYear.setEditor(newJSpinner.NumberEditor(showYear,"0000")); showYear.setPreferredSize(newDimension(60,30));//變更尺寸 yl.setFont(newFont("TimesRomn",Font.BOLD,16)); monthModel=newSpinnerNumberModel(month,0,13,1) ; showMonth=newJSpinner(monthModel); showMonth.setPreferredSize(newDimension(60,30));//變更尺寸 ml.setFont(newFont("TimesRomn",Font.BOLD,16)); }}BNote.java源程序代碼CDateTime.java源程序代碼DLeftPane.java源程序代碼EMonthPane.java源程序代碼FMusic.java源程序代碼GNote.java源程序代碼HNoteBook.java源程序代碼INotePane.java源程序代碼JNotePopupMenu.java源程序代碼《日記本的設(shè)計(jì)和實(shí)現(xiàn)》源代碼:importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.*;importjavax.swing.*;importjavax.swing.event.*;classNoteBookextendsJFrameimplementsChangeListener,MouseListener{ intyear,month,day; Calendarc; intfirst,days; LeftPanelp; NotePanenp;publicNoteBook(){ super("日記本的設(shè)計(jì)和實(shí)現(xiàn)"); this.setDefaultCloseOperation(3); Containercon=getContentPane(); bookInit(); addEvent(); add(lp,"West");add(np);this.pack();this.setResizable(true);this.setVisible(true);} voidbookInit(){ lp=newLeftPane(); np=newNotePane(); year=DateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay();}voidaddEvent(){ lp.ym.showMonth.addChangeListener(this); lp.ym.showYear.addChangeListener(this); for(inti=0;i<lp.mp.showDay.length;i++){ lp.mp.showDay[i].addMouseListener(this); }}publicvoidstateChanged(ChangeEvente){ month=Integer.parseInt(lp.ym.showMonth.getValue().toString()); year=Integer.parseInt(lp.ym.showYear.getValue().toString()); noteBookRefresh();}voidnoteBookRefresh(){ np.refreshContent(year,month,day); np.setDateInfo(year,month,day); lp.mp.arrangeNum(year,month,day);}publicvoidmouseClicked(MouseEvente){ JTextFieldsource=(JTextField)e.getSource(); try{ day=Integer.parseInt(source.getText()); noteBookRefresh(); } catch(Exceptionee){}}publicvoidmousePressed(MouseEvente){}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){} classYearMonthextendsJPanel{ privateintyear; privateintmonth; privateJLabelyl; privateJLabelml; JSpinnershowYear; JSpinnershowMonth; YearMonth(){ ymInit(); add(yl);add(showYear); add(ml);add(showMonth); } voidymInit(){ yl=newJLabel("年"); ml=newJLabel("月"); year=DateTime.getYear(); month=DateTime.getMonth(); showYear=newJSpinner(newSpinnerNumberModel(year,0,10000,1)); showYear.setEditor(newJSpinner.NumberEditor(showYear,"0000")); showYear.setPreferredSize(newDimension(60,30)); yl.setFont(newFont("TimesRomn",Font.BOLD,16)); showMonth=newJSpinner(newSpinnerNumberModel(month,1,12,1)); showYear.setPreferredSize(newDimension(60,30)); ml.setFont(newFont("TimesRomn",Font.BOLD,16)); } } staticclassDateTime{ staticCalendartoday=Calendar.getInstance(); staticintgetYear(){ returntoday.get(today.YEAR); } staticintgetMonth(){ returntoday.get(today.MONTH)+1; } staticintgetDay(){ returntoday.get(today.DAY_OF_MONTH); } staticintgetMonDay(intyear,intmonth){ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ return31; } elseif(month==4||month==6||month==9||month==11){ return30; } if((year%4==0&&year%100!=0)||year%400==0){ return29; } else{ return28; } } } classLeftPaneextendsJPanel{ YearMonthym; MonthPanemp; JLabeltupian; JPanellp; JSplitPanesplit; LeftPane(){ super(newBorderLayout()); ym=newYearMonth(); mp=newMonthPane(); lp=newJPanel(newBorderLayout()); lp.add(ym,"South"); lp.add(mp); split=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT); this.add(lp); this.add(split,"East"); } } classMonthPaneextendsJPanel{ JTextFieldshowDay[]; intfirst,days; YearMonthym; String[]week; JLabel[]title; intyear,month,day; MonthPane(){ super(newGridLayout(7,7,3,3)); mcInit(); for(inti=0;i<7;i++) add(title[i]); for(inti=0;i<42;i++) add(showDay[i]); arrangeNum(year,month,day); } voidmcInit(){ year=DateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay(); Stringweek[]={"日","一","二","三","四","五","六"}; title=newJLabel[7]; for(intj=0;j<7;j++){ title[j]=newJLabel(); title[j].setText(week[j]); title[j].setBorder(BorderFactory.createEmptyBorder()); title[j].setFont(newFont("",1,18)); } title[0].setForeground(Color.red); title[6].setForeground(Color.blue); showDay=newJTextField[42]; for(inti=0;i<42;i++){ showDay[i]=newJTextField(); showDay[i].setFont(newFont("",0,14)); showDay[i].setEditable(false); } } publicvoidarrangeNum(intyear,intmonth,intday){ days=DateTime.getMonDay(year,month); Calendarc=Calendar.getInstance(); c.set(year,month-1,1); first=c.get(Calendar.DAY_OF_WEEK)-1; if(first!=0){ for(inti=0;i<first;i++){ showDay[i].setText(""); } } for(inti=first,n=1;i<first+days;i++,n++){ showDay[i].setText(""+n); intr=i+1; if(n==day){ if(r%7==0||(r+6)%7==0){ showDay[i].setForeground(Color.blue); showDay[i].setFont(newFont("TimesRoman",Font.BOLD,20)); } else{ showDay[i].setForeground(Color.green); showDay[i].setFont(newFont("TimesRoman",Font.BOLD,20)); } } else{ showDay[i].setFont(newFont("TimesRoman",Font.BOLD,12)); showDay[i].setForeground(Color.black); } if(i%7==0){ showDay[i].setForeground(Color.red); } if(i%7==6){ showDay[i].setForeground(Color.blue); } } if(first+days<41){ for(inti=first+days;i<42;i++){ showDay[i].setText(""); } } } } classNotePaneextendsJPanelimplementsActionListener,MouseListener{ privateintyear,month,day; privateJTextAreanote; privateJButtonsave,delete,input,export; privateHashtabletable; privateJLabeldateInfo; privateFilefile; privateJPanelbuttonPane; privateJMenuItemcopy; privateJMenuItemcut; privateJMenuItempaste; privateJPopupMenuf; JPanelp=newJPanel(); NotePane(){ super(newBorderLayout()); noteInit(); buttonInit(); addEvent(); p.add(dateInfo); add(p,"North"); add(newJScrollPane(note)); add(buttonPane,"South"); refreshContent(year,month,day); } privatevoidnoteInit(){ year=DateTime.getYear(); month=DateTime.getMonth(); day=DateTime.getDay(); dateInfo=newJLabel(year+"年"+month+"月"+day+"日",JLabel.CENTER); dateInfo.setFont(newFont("TimesRomn",Font.BOLD,16)); dateInfo.setForeground(Color.BLUE); table=newHashtable(); file=newFile("Note.txt"); initFile(); note=newJTextArea(); note.setFont(newFont("",0,14)); note.setLineWrap(true); } privatevoidbuttonInit(){ f=newJPopupMenu(); cut=newJMenuItem("剪切"); copy=newJMenuItem("復(fù)制"); paste=newJMenuItem("粘貼"); save=newJButton("保存日記"); delete=newJButton("刪除日記"); input=newJButton("導(dǎo)入日記"); export=newJButton("導(dǎo)出日記"); buttonPane=newJPanel(newFlowLayout()); buttonPane.add(save); buttonPane.add(delete); buttonPane.add(input); buttonPane.add(export); f.add(cut); f.add(copy); f.add(paste); } privatevoidaddEvent(){ save.addActionListener(this); delete.addActionListener(this); input.addActionListener(this); export.addActionListener(this); cut.addActionListener(this); copy.addActionListener(this); paste.addActionListener(this); note.addMouseListener(this); } privatevoidinitFile(){ if(!file.exists()){ try{ FileOutputStreamout=newFileOutputStream(file); ObjectOutputStreamobjectOut=newObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); } catch(IOExceptione){} } } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==save) save(year,month,day); elseif(e.getSource()==delete) delete(year,month,day); elseif(e.getSource()==input) input(); elseif(e.getSource()==export) export(); elseif(e.getSource()==cut) note.cut(); elseif(e.getSource()==copy) note.copy(); elseif(e.getSource()==paste) note.paste(); } publicvoidsetDateInfo(int_y,int_m,int_d){ this.year=_y; this.month=_m; this.day=_d; dateInfo.setText(_y+"年"+_m+"月"+_d+"日"); } publicStringgetDateKey(){ Strings=""+year; if(month<10)s+="/0"+month; elses+="/"+month; if(day<10)s+="/0"+day; elses+="/"+day; returns; } publicvoidrefreshContent(intyear,intmonth,intday){ Stringkey=this.getDateKey(); try{ FileInputStreamin1=newFileInputStream(file); ObjectInputStreamin2=newObjectInputStream(in1); table=(Hashtable)in2.readObject(); in1.close(); in2.close(); } catch(Exceptionee){} if(table.containsKey(key)) note.setText(table.get(key)+""); else note.setText(""); } publicvoidsave(intyear,intmonth,intday){ StringlogContent=note.getText(); Stringkey=this.getDateKey(); try{ table.put(key,logContent); FileOutputStreamout=newFileOutputStream(file); ObjectOutputStreamobjectOut=newObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); } catch(Exceptionee){} JOptionPane.showMessageDialog(null,key+"當(dāng)天的日記已勝利保存!"); } publicvoiddelete(intyear,intmonth,intday){ Stringkey=this.getDateKey(); if(table.containsKey(key)){ JOptionPanejo=newJOptionPane(); intx=jo.showConfirmDialog(null,"要?jiǎng)h除"+year+"年"+month+"月"+day+"日"+"的記錄嗎?","!!!",JOptionPane.YES_NO_OPTION); if(x==jo.YES_OPTION){ try{ FileInputStreamin1=newFileInputStream(file); ObjectInput

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論