九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

《Java程序設(shè)計(jì)》課程設(shè)計(jì)日歷記事本

  • 資源ID:27737020       資源大小:627.06KB        全文頁(yè)數(shù):29頁(yè)
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

《Java程序設(shè)計(jì)》課程設(shè)計(jì)日歷記事本

2 本科生課程設(shè)計(jì) 課程名稱(chēng) Java 程序設(shè)計(jì)課程設(shè)計(jì) 課程編號(hào) j1620011 題目 日歷記事本 學(xué)號(hào) 200811622214 學(xué)生姓名 所在專(zhuān)業(yè) 信息管理與信息系統(tǒng) 所在班級(jí) 信管 1082 指導(dǎo)教師 成績(jī) 教師簽字 評(píng)語(yǔ): 課程設(shè)計(jì)時(shí)間:2010 年 12 月 20 日-2010 年 12 月 24 日 設(shè)計(jì)總說(shuō)明 - 1 - 目 錄 摘 要 2 1引 言 2 2. 設(shè)計(jì)的目的與任 務(wù) 2 3設(shè)計(jì)方 案 3 3.1 總體設(shè) 計(jì) 3 3.2 設(shè)計(jì)要 求 3 3.3 系統(tǒng)的主要功 能 設(shè)計(jì)總說(shuō)明 - 2 - 3 3.4 各個(gè)類(lèi)的組合結(jié)構(gòu) 圖 4 3.5 各個(gè)類(lèi)說(shuō) 明 4 3.5.1 CalendarWindow 類(lèi)4 3.5.2 CalendarMessage 類(lèi)11 3.5.3 CalendarPad 類(lèi) 13 3.5.4 NotePad 類(lèi) 14 3.5.5 CalendarImage 類(lèi)19 3.5.6 Clock 類(lèi) 20 設(shè)計(jì)總說(shuō)明 - 3 - 4各種功能截 圖 24 5. 課程設(shè)計(jì)總 結(jié) 26 Java 程序設(shè)計(jì)課程設(shè)計(jì) 日歷記事本 摘 要 本課程設(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)一步了解。 在這個(gè)課程設(shè)計(jì)中,我們做成了一個(gè)有日歷標(biāo)記的記事本軟件,日歷記事本面板 由日歷、記事本、圖片、時(shí)鐘四部分組成。日歷部分可以選擇不同的年份、月份、日 期和星期;記事本模塊可以實(shí)現(xiàn)查看,保存,刪除日志等操作;并且每一步操作都有 相應(yīng)提示;圖片模塊可以顯示預(yù)設(shè)的圖片;時(shí)鐘模塊可以用時(shí)鐘來(lái)顯示當(dāng)前時(shí)間。本 軟件是一個(gè)實(shí)用性較強(qiáng),簡(jiǎn)潔,美觀,方便的功能軟件。 1. 引言 Java 是一種純面向?qū)ο蟮?、網(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 的了解。 設(shè)計(jì)總說(shuō)明 - 4 - 本次課程設(shè)計(jì)的實(shí)例雖然比較簡(jiǎn)單,程序設(shè)計(jì)也不是很復(fù)雜,但在此程序的設(shè)計(jì) 過(guò)程也是一個(gè)學(xué)習(xí)過(guò)程,更是對(duì)復(fù)雜程序的一個(gè)學(xué)習(xí)過(guò)程,還能培養(yǎng)我們的數(shù)抽象能 力。因此,我們覺(jué)得這次課程設(shè)計(jì)是非常有意義的,能為我們今后學(xué)習(xí)面向過(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é)的理論知識(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)新的精神,逐步建立正確的全局觀念。 3.設(shè)計(jì)方案 3.1 總體設(shè)計(jì) (1)問(wèn)題定義:創(chuàng)建日歷記事本,實(shí)現(xiàn)對(duì)某日期的事情進(jìn)行記錄這主要功能,并能 顯示設(shè)置的圖片和時(shí)鐘,增加美觀。 (2)問(wèn)題分析:通過(guò)對(duì)“日歷記事本”這一題材的分析,我需要四個(gè)類(lèi)來(lái)實(shí)現(xiàn)其 “日歷”和“記事本”這兩大功能。通過(guò)主類(lèi) CalendWindow 創(chuàng)建動(dòng)日歷記事本軟件的 主窗口,該類(lèi)含有 main 方法,程序從該類(lèi)開(kāi)始執(zhí)行。再用余下 CalendarPad、 CalendarMessage 、NotePad 類(lèi)來(lái)顯示并改變?nèi)掌诤蛯?shí)現(xiàn)記事本的功能。 而 CalendarImage 和 Clock 這兩個(gè)類(lèi)用來(lái)顯示圖片和時(shí)鐘。 (3)研究意義:通過(guò)本次課程設(shè)計(jì),我們掌握了 Java 語(yǔ)言的基本運(yùn)用,提高了理論結(jié) 合實(shí)際的能力。 3.2 設(shè)計(jì)要求 (1)界面的左側(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)去的。 (2)系統(tǒng)界面的右側(cè)是記事本和一個(gè)鬧鐘。用鼠標(biāo)單擊日歷上的日期,就可以通過(guò) 該記事本編輯有關(guān)日志,并將日志保存到一個(gè)文件,該文件的名字由該日期組成的字 設(shè)計(jì)總說(shuō)明 - 5 - 符序列命名。用戶可以查看,刪除某個(gè)日期的日志,也可以繼續(xù)向某個(gè)日志添加新內(nèi) 容。 時(shí)鐘能夠?qū)崟r(shí)顯示當(dāng)前的時(shí)間。 (3)當(dāng)某個(gè)日期有日志時(shí),在日歷表該日期的外觀上就會(huì)出現(xiàn)“yes”標(biāo)記,表明 這個(gè)日期有日志,當(dāng)用戶刪除某個(gè)日期的日志后,該日期的外觀上“yes”標(biāo)志就會(huì)消 失。 3.3 系統(tǒng)的主要功能 (1)可以對(duì)個(gè)人日志進(jìn)行添加、查閱、刪除; (2)可以方便地在任何日期記載個(gè)人日志以及查看某個(gè)日期記載的日志 ; (3)可以顯示當(dāng)前日期與時(shí)間。 3.4 各個(gè)類(lèi)的組合結(jié)構(gòu)圖 3.5 各個(gè)類(lèi)說(shuō)明 (1)主函數(shù) CalendarWindow 類(lèi) 該類(lèi)是整個(gè)程序的主框架,是 javax.swing 包中 Jframe 的一個(gè)子類(lèi)。并實(shí)現(xiàn)了 ActionListener、MouseListener 和 FocusListener 接口。以下是該類(lèi)的有關(guān)數(shù)據(jù)說(shuō)明! 1)成員變量 year,month 和 day 是 int 型變量。它們的值分別確定年份、月份和日期。 CalendarWindow CalendarMessage CalendarImage CalendarPad JTextField FileNotePad JTextArea Clock 設(shè)計(jì)總說(shuō)明 - 6 - calendarMessage 是 CalnedarMessage 對(duì)象,該對(duì)象用來(lái)處理與日期有關(guān)的數(shù)據(jù)。 calendarPad 是 CalendarPad 對(duì)象,該對(duì)象可以顯示與日期有關(guān)的數(shù)據(jù)。 notPad 是 NotPad 的對(duì)象。具有編輯、讀取、保存和刪除日志的功能。 showYear 和 showMonth 是 JtextField 類(lèi)創(chuàng)建的文本框,用來(lái)顯示年月。 showDay 數(shù)組的每個(gè)單元是 JtextField 類(lèi)創(chuàng)建的用來(lái)顯示日期的文本框。 calendarImage 是 CalendarImage 創(chuàng)建的對(duì)象,用來(lái)顯示圖像。 clock 是 Clock 創(chuàng)建的對(duì)象,用來(lái)顯示時(shí)鐘。 nextYear,PreviousYear,nextMonth 和 PreviousMonth 是 JButton 創(chuàng)建的按鈕 對(duì)象,名字依次為“下年、上年、下月、上月” 。這些按鈕都將當(dāng)前窗口注冊(cè)為自 己的 ActionEvent 事件監(jiān)視器。 savaDailyRecord,deleteDailyRecord 和 readDailyRecord 是 JButton 創(chuàng)建的按 鈕對(duì)象,名字依次為“保存日志、刪除日志、讀取日志” 。這些按鈕都將當(dāng)前窗口 注冊(cè)為自己的 ActionEvent 事件監(jiān)視器。 2)方法 CalendarWindow()是構(gòu)造方法,負(fù)責(zé)完成窗口初始化。 actionPerformed(ActionEvent)方法是 CalendarWindow 類(lèi)實(shí)現(xiàn)的 ActionListener 接口中的方法。CalendarWindow 創(chuàng)建的窗口是 nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,d eleteDailyRecord 和 readDailyRecord 按鈕的 ActionEvent 事件監(jiān)視器,當(dāng)用 戶單擊其中按鈕時(shí),窗口將執(zhí)行 actionPerformed(ActionEvent)方法進(jìn)行相 應(yīng)的操作。 mousePressed(MouseEvent)方法是 CalendarWindow 類(lèi)實(shí)現(xiàn)的 MouseListener 接口中的方法。CalendarWindow 創(chuàng)建的窗口時(shí) showDay 數(shù)組中的 JtextField 文本框的 MouseEvent 事件監(jiān)視器,當(dāng)用戶在某個(gè)顯示日期的文本框上按下鼠 標(biāo)左鍵時(shí),窗口將執(zhí)行 mousePress(MouseEvent)方法進(jìn)行相應(yīng)操作。 focusGained(FocusEvent)和 focusLost(FocusEvent)方法是 CalendarWindow 類(lèi)實(shí)現(xiàn)的 FocusListener 接口中的方法。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)的操作。 doMark()方法負(fù)責(zé)對(duì)有日志的日期作出標(biāo)志。 main 方法是程序運(yùn)行的入口方法。 設(shè)計(jì)總說(shuō)明 - 7 - 詳細(xì)代碼: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; public class CalendarWindow extends JFrame implements ActionListener, MouseListener,FocusListener int year,month,day; CalendarMessage calendarMessage; CalendarPad calendarPad; NotePad notePad; JTextField showYear,showMonth; JTextField showDay; CalendarImage calendarImage; Clock clock; JButton nextYear,previousYear,nextMonth,previousMonth; JButton saveDailyRecord,deleteDailyRecord,readDailyRecord; File dir; Color backColor=Color.white; public CalendarWindow() dir= new File(./dailyRecord); dir.mkdir(); showDay = new JTextField42; for(int i=0;i12) month=1; showMonth.setText(+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); else if (e.getSource()=previousMonth) 設(shè)計(jì)總說(shuō)明 - 10 - month-; if(month1) month=12; showMonth.setText(+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); else if (e.getSource()=showYear) String s = showYear.getText().trim(); char a = s.toCharArray(); boolean boo = false; for(int i = 0;i a.length;i+) if(!(Character.isDigit(ai) boo = true; if(boo=true) JOptionPane.showMessageDialog(this,你輸入了非法年份,警告!, JOptionPane.WARNING_MESSAGE); else if(boo=false) year = Integer.parseInt(s); showYear.setText(+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); else if (e.getSource()= saveDailyRecord) notePad.save(dir,year,month,day); doMark(); else if(e.getSource()=deleteDailyRecord) notePad.delete(dir,year,month,day); doMark(); else if (e.getSource()=readDailyRecord) notePad.read(dir,year,month,day); 設(shè)計(jì)總說(shuō)明 - 11 - doMark(); public void mousePressed(MouseEvent e) JTextField text = (JTextField)e.getSource(); String str = text.getText().trim(); try day = Integer.parseInt(str); catch (NumberFormatException exp) calendarMessage.setDay(day); notePad.setShowMessage(year,month,day); public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e) public void focusGained(FocusEvent e) Component com = (Component)e.getSource(); com.setBackground(Color.pink); public void focusLost(FocusEvent e) Component com = (Component)e.getSource(); com.setBackground(backColor); public void doMark() for(int i=0;ishowDay.length;i+) showDayi.removeAll(); String str = showDayi.getText().trim(); try int n = Integer.parseInt(str); if(isHaveDailyRecord(n)=true) 設(shè)計(jì)總說(shuō)明 - 12 - JLabel mess = new JLabel(yes); mess.setFont(new Font(TimesRoman,Font.PLAIN,11); mess.setForeground(Color.blue); showDayi.add(mess); catch (Exception exp) calendarPad.repaint(); calendarPad.validate(); public boolean isHaveDailyRecord(int n) String key = +year+month+n; String dayFile = dir.list(); boolean boo = false; for(int k = 0;kdayFile.length;k+) if(dayFilek.equals(key+.txt) boo = true; break; return boo; public static void main(String args) new CalendarWindow(); (2)CalendarMessage 類(lèi) CalendarMessage 類(lèi)創(chuàng)建的對(duì)象 calendarMessage 是 CalendarWindow 窗口的重要成員 對(duì)象之一,負(fù)責(zé)處理和日期有關(guān)的數(shù)據(jù)。該類(lèi)的有關(guān)數(shù)據(jù)說(shuō)明如下: 1)成員變量 year,month,day 是 int 型數(shù)據(jù),它們的值分別確定年份、月份和日期。 2)方法 設(shè)計(jì)總說(shuō)明 - 13 - setYear(int)和 getYear()方法分別用來(lái)設(shè)置 year 和獲取 year 的值。 setMonth(int)和 getMonth()方法分別用來(lái)設(shè)置 month 和獲取 month 的值。 setDay(int)和 getDay()方法分別用來(lái)設(shè)置和獲取 day 的值。 getMonthCalendar()方法是用來(lái)處理日期數(shù)據(jù),使其按著習(xí)慣來(lái)顯示。即日 歷牌中每行的第一列為“星期天” 。getMonthCalendar()方法根據(jù) year,month 和 day 的值返回一個(gè)存放著“日歷”數(shù)據(jù)的 String 類(lèi)型的數(shù)組, 例如,如果某月有 30 天,而且該月的第一天是星期三,那么返回的 String 類(lèi) 型的數(shù)組是:“” , “”, “”, “1”, “2”, “30”。 詳細(xì)代碼: import java.util.Calendar; public class CalendarMessage int year=-1,month=-1,day=-1; public void setYear(int year) this.year=year; public int getYear() return year; public void setMonth(int month) if(month=1) this.month=month; else this.month=1; public int getMonth() return month; public void setDay(int day) this.day=day; public int getday() return day; public String getMonthCalendar() String day=new String42; Calendar rili=Calendar.getInstance(); 設(shè)計(jì)總說(shuō)明 - 14 - rili.set(year,month-1,1);/將日歷翻到 year 年 month 月 1 日 int 星期幾=rili.get(Calendar.DAY_OF_WEEK)-1; int dayAmount=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) dayAmount=31; if(month=4|month=6|month=9|month=11) dayAmount=30; if(month=2) if(year%4=0) else dayAmount=28; for(int i=0;i星期幾;i+) dayi= ; for(int i=星期幾,n=1;i星期幾+dayAmount;i+) dayi=String.valueOf(n); n+; for (int i=星期幾+dayAmount;i42;i+ ) dayi= ; return day; (3)CalendarPad 類(lèi) CalendarPad 類(lèi)是 javax.swing 包中 Jpanel 容器的子類(lèi),所創(chuàng)建的對(duì)象:calendarPad 是 CalendarWindow 類(lèi)中最重要的成員之一,負(fù)責(zé)顯示經(jīng) CalendarMessage 類(lèi)處理后的 日期數(shù)據(jù),被添加到 CalendarWindow 窗口的左上側(cè)。以下是該類(lèi)的有關(guān)說(shuō)明: 1)成員變量 year,month 和 day 是 int 型數(shù)據(jù),它們的值分別確定年份、月份和日期 calendarMessage 是 CalendarMessage 對(duì)象,該對(duì)象可以處理和日期有關(guān)的數(shù) 據(jù)。 showDay 數(shù)組的每個(gè)單元是 JtextField 類(lèi)創(chuàng)建的用來(lái)顯示日期的文本框。 “星期”是 String 數(shù)組,單元的值依次為“SUN 日” 、 “MON 一” 、 “TUE 二” 、 “WED 三” 、 “THU 四” 、 “FRI 五” 、 “SAT 六” 。 2)方法 CalendarPad()是構(gòu)造方法,用來(lái)創(chuàng)建 calendarPad 對(duì)象。 setShowDayTextField(JtextField)方法負(fù)責(zé)設(shè)置 showDay 數(shù)組。 設(shè)計(jì)總說(shuō)明 - 15 - setCalendarMessage(CalendarMessage)方法負(fù)責(zé)設(shè)置 calendarMessage 對(duì)象。 showMonthCalendar()方法負(fù)責(zé)顯示“日歷” 。 詳細(xì)代碼: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class CalendarPad extends JPanel int year,month,day; CalendarMessage calendarMessage; JTextField showDay; JLabel title ; String 星期=SUN 日,MON 一,TUE 二,WED 三,THU 四,FRI 五,SAT 六; JPanel north,center; public CalendarPad() setLayout(new BorderLayout(); north=new JPanel(); north.setLayout(new GridLayout(1,7); center=new JPanel(); center.setLayout(new GridLayout(6,7); add(center,BorderLayout.CENTER); add(north,BorderLayout.NORTH); title=new JLabel7; for(int j=0;j7;j+) titlej=new JLabel(); titlej.setFont(new Font(TimesRoman,Font.BOLD,12); titlej.setText(星期j); titlej.setHorizontalAlignment(JLabel.CENTER); titlej.setBorder(BorderFactory.createRaisedBevelBorder(); north.add(titlej); title0.setForeground(Color.red); title6.setForeground(Color.blue); public void setShowDayTextField(JTextField text) showDay=text; for(int i=0;ishowDay.length;i+) showDayi.setFont(new Font(TimesRoman,Font.BOLD,15); showDayi.setHorizontalAlignment(JTextField.CENTER); showDayi.setEditable(false); center.add(showDayi); 設(shè)計(jì)總說(shuō)明 - 16 - public void setCalendarMessage(CalendarMessage calendarMessage) this.calendarMessage=calendarMessage; public void showMonthCalendar() String a=calendarMessage.getMonthCalendar(); for(int i=0;i42;i+) showDayi.setText(ai); validate(); (4)NotePad 類(lèi) NotePad 類(lèi) javax.swing 包中的 Jpanel 容器的子類(lèi),實(shí)現(xiàn)了 ActionListener 接口,所創(chuàng)建 的對(duì)象:notePad 是 MineGame CalendarWindow 類(lèi)中的重要成員之一,作為一個(gè)容器添 加到 CalendarWindow 窗口的右上側(cè)以,下是該類(lèi)的有關(guān)說(shuō)明: 1)成員變量 text 是 JtextArea 創(chuàng)建的文本區(qū),可在 text 中編譯多行文本。 showMessage 是 JtextField 創(chuàng)建的文本條,用來(lái)顯示和日期相關(guān)的數(shù)據(jù)。 menu 是 JpopupMenu 創(chuàng)建的彈出式菜單。 itemCopy、itemCut、itemPaste、itemClear 是 JmenuItem 創(chuàng)建的菜單項(xiàng),名字 依次是“復(fù)制 ”, “剪切”, “黏貼”, “清空”。 2)方法 NotePad()構(gòu)造方法,用來(lái)創(chuàng)建 notePad 對(duì)象。 setShowMessage(int,int,int)方法根據(jù)參數(shù)指定的日期數(shù)據(jù)顯示有關(guān)日期信 息。 save(File,int,int, int)方法根據(jù)參數(shù)指定日期保存日志 delete(File ,int,int ,int) 用于刪除日志 read(File ,int,int, int)用于讀取日志。 詳細(xì)代碼: import java.awt.*; import javax.swing.*; import java.io.*; import java.awt.event.*; public class NotePad extends JPanel implements ActionListener JTextArea text; JTextField showMessage; JPopupMenu menu; JMenuItem itemCopy,itemCut,itemPaste,itemClear; public NotePad() 設(shè)計(jì)總說(shuō)明 - 17 - showMessage=new JTextField(); showMessage.setHorizontalAlignment(JTextField.CENTER); showMessage.setFont(new Font(TimesRoman,Font.BOLD,16); showMessage.setForeground(Color.blue); showMessage.setBackground(Color.pink); showMessage.setBorder(BorderFactory.createRaisedBevelBorder(); showMessage.setEditable(false); menu =new JPopupMenu(); itemCopy=new JMenuItem(復(fù)制); itemCut=new JMenuItem(剪切); itemPaste=new JMenuItem(粘貼); itemClear=new JMenuItem(清空); itemCopy.addActionListener(this); itemCut.addActionListener(this); itemPaste.addActionListener(this); itemClear.addActionListener(this); menu.add(itemCopy); menu.add(itemCut); menu.add(itemPaste); menu.add(itemClear); text=new JTextArea(10,10); text.addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent e) if(e.getModifiers()=InputEvent.BUTTON3_MASK) menu.show(text,e.getX(),e.getY(); ); setLayout(new BorderLayout(); add(showMessage,BorderLayout.NORTH); add(new JScrollPane(text),BorderLayout.CENTER); public void setShowMessage(int year,int month, int day) showMessage.setText(+year+年+month+月+day+日); public void save(File dir,int year,int month,int day) String dailyContent=text.getText(); String fileName=+year+month+day+.txt; String key=+year+month+day; String dayFile=dir.list(); boolean boo=false; for(int k=0;kdayFile.length;k+) if(dayFilek.startsWith(key) boo=true; 設(shè)計(jì)總說(shuō)明 - 18 - break; if(boo) String m=+year+年+month+月+day+ 已有日志,將新內(nèi)容添加到日志嗎? ; int ok=JOptionPane.showConfirmDialog(this, m, 詢(xún)問(wèn), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try File f=new File(dir,fileName); RandomAccessFile out=new RandomAccessFile(f,rw); long fileEnd=out.length(); byte bb=dailyContent.getBytes(); out.seek(fileEnd); out.write(bb); out.close(); catch(IOException exp) else String m=+year+年+month+月+day+ 還沒(méi)有日志,保存日志嗎 ?; int ok=JOptionPane.showConfirmDialog(this, m, 詢(xún)問(wèn),JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try File f=new File(dir,fileName); RandomAccessFile out= new RandomAccessFile(f,rw); long fileEnd=out.length(); byte bb=dailyContent.getBytes(); out.write(bb); out.close(); catch(IOException exp) public void delete(File dir,int year,int month,int day) String key =+year+month+day; String dayFile=dir.list(); boolean boo=false; for(int k=0;kdayFile.length;k+) if(dayFilek.startsWith(key) 設(shè)計(jì)總說(shuō)明 - 19 - boo=true; break; if(boo) String m=刪除+year+年+month+月+day+ 日的日志嗎?; int ok=JOptionPane.showConfirmDialog(this,m,詢(xún)問(wèn) ,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String fileName=+year+month+day+.txt; File deleteFile=new File(dir,fileName); deleteFile.delete(); else String m=+year+年+month+月+day+無(wú)日志記錄; JOptionPane.showMessageDialog(this,m,提示,JOptionPane.WARNING_MESSAGE); public void read(File dir,int year,int month,int day) String fileName=+year+month+day+.txt; String key=+year+month+day; String dayFile=dir.list(); boolean boo=false; for(int k=0;kdayFile.length;k+) if(dayFilek.startsWith(key) boo=true; break; if(boo) String m=+year+年+month+月+day+ 有日志,顯示日志內(nèi)容嗎 ?; int ok=JOptionPane.showConfirmDialog(this,m,詢(xún)問(wèn) ,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) text.setText(null); try File f=new File(dir,fileName); FileReader inOne=new FileReader(f); BufferedReader inTwo=new BufferedReader(inOne); String s=null; while (s=inTwo.readLine()!=null) text.append(s+n); 設(shè)計(jì)總說(shuō)明 - 20 - inOne.close(); inTwo.close(); catch(IOException exp) else String m=+year+年+month+月+day+ 無(wú)日志記錄 ; JOptionPane.showMessageDialog(this,m,提示,JOptionPane.WARNING_MESSAGE); public void actionPerformed(ActionEvent e) if(e.getSource()=itemCopy) text.copy(); else if(e.getSource()=itemCut) text.cut(); else if(e.getSource()=itemPaste) text.paste(); else if(e.getSource()=itemClear) text.setText(null); (5)CalendarImage 類(lèi) CalendarImage 創(chuàng)建的對(duì)象負(fù)責(zé)繪制圖像 CalendarImage 類(lèi)是 javax.swing 包中 Jpanel 容器的一個(gè)子類(lèi),創(chuàng)建的對(duì)象 calendarMessage 是 CalendarWindow 類(lèi)的成員之一,負(fù)責(zé)繪制圖像,作為一個(gè)容器添加 到 CalendarWindow 窗口的左下側(cè),以下是該類(lèi)的有關(guān)說(shuō)明: 1) 成員變量 imageFile 是 File 對(duì)象,用來(lái)存放圖像文件的引用 image 是 Image 對(duì)象 tool 是 Tookit 對(duì)象,負(fù)責(zé)創(chuàng)建 image 對(duì)象 2) 方法 CalendarImage()是構(gòu)造方法,負(fù)責(zé)創(chuàng)建 calendarImage 對(duì)象 setImageFile(File)方法負(fù)責(zé)設(shè)置 imageFile 對(duì)象,并根據(jù) imageFile 創(chuàng)建 image paintComponent(Griphics)方法負(fù)責(zé)繪制 image 詳細(xì)代碼: import javax.swing.*; 設(shè)計(jì)總說(shuō)明 - 21 - import java.io.*; import java.awt.*; public class CalendarImage extends JPanel File imageFile; Image image; Toolkit tool; CalendarImage() tool = getToolkit(); public void setImageFile(File f) imageFile = f; try image = tool.getImage(imageFile.toURI().toURL(); catch (Exception e) repaint(); public void paintComponent(Graphics g) super.paintComponent(g); int w = getBounds().width; int h = getBounds().height; g.drawImage(image,0,0,w,h,this); (6)Clock 類(lèi) Clock 類(lèi)是 javax.swing 包中 Jpanel 容器的子類(lèi),并實(shí)現(xiàn)了 ActionListener 接口,所創(chuàng)建 的對(duì)像:clock 是 CalendarWindow 類(lèi)中的成員之一,負(fù)責(zé)顯示時(shí)間,被添加到 CalendarWindow 窗口的右下側(cè),以下是該類(lèi)的有關(guān)說(shuō)明: 1) 成員變量 date 是 Date 對(duì)像,負(fù)責(zé)封裝本地時(shí)間 secondTime 是 javax.swing 包中 Timer 類(lèi)創(chuàng)建的計(jì)時(shí) hour,minute 和 second 是 int 型數(shù)據(jù),分別飛“小時(shí)” , “分鐘”和“秒” 設(shè)計(jì)總說(shuō)明 - 22 - secondLine,minuteLine 和 hourLine 是 Lint2D 對(duì)象,分別負(fù)責(zé)繪制“時(shí)針” , “分針” , “秒針” pointSX, pointSY 是 double 型數(shù)組,其單元值用來(lái)表示秒針端點(diǎn)的坐標(biāo) pointMX,pointMY 是 double 型數(shù)組,其單元值用來(lái)表示分針端點(diǎn)坐標(biāo) pointHX,pointHY 是 double 型數(shù)組,其單元值用來(lái)便是時(shí)針端點(diǎn)坐標(biāo) 2) 方法 Clock()是構(gòu)造方法,用來(lái)創(chuàng)建 clock 對(duì)象 initPoint()負(fù)責(zé)創(chuàng)建表盤(pán)所需要的坐標(biāo)點(diǎn) paintComponent(Graphics)負(fù)責(zé)完成繪制工作 actionPerformed(ActionEvent)是接口 ActionListener 中的方法。使用 Timer 類(lèi) 的構(gòu)造方法:timer(int a ,Object b )創(chuàng)建一個(gè)計(jì)時(shí)器,其中的參數(shù) a 的單 位是毫秒,確定計(jì)時(shí)器每隔 a 毫秒“振鈴”一次,參數(shù) b 是計(jì)時(shí)器的監(jiān)視器。 計(jì)時(shí)器發(fā)生的振鈴時(shí)件是 ActionEvent 類(lèi)型時(shí)件,當(dāng)振鈴時(shí)間發(fā)生時(shí),監(jiān)視器 就會(huì)監(jiān)視到這個(gè)事件,監(jiān)視器就會(huì)回調(diào)用 ActionListener 接口中的 actionPerformed(ActionEvent)方法,該方法所做的操作是:每隔 1 秒鐘,讓秒 針前進(jìn)一個(gè)刻度,既 secondLine 改變端點(diǎn)坐標(biāo);每隔 1 分鐘,讓分針前進(jìn)一個(gè) 刻度(表盤(pán)一周為 360,每個(gè)時(shí)刻為 6) ,既 muniteLine 改變端點(diǎn)坐標(biāo);每 隔 12 分鐘,讓時(shí)針前進(jìn)一個(gè)刻度,既 hourLine 改變端點(diǎn)坐標(biāo)。 詳細(xì)代碼: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; public class Clock extends JPanel implements ActionListener Date date; javax.swing.Timer secondTime; int hour,munite,second; Line2D secondLine,muniteLine,hourLine; int a,b,c,width,height; double pointSX = new double60, pointSY = new double60, pointMX = new double60, pointMY = new double60, pointHX = new double60, pointHY = new double60; Clock() 設(shè)計(jì)總說(shuō)明 - 23 - setBackground(Color.cyan); initPoint(); secondTime = new javax.swing.Timer(1000,this); secondLine = new Line2D.Double(0,0,0,0); muniteLine = new Line2D.Double(0,0,0,0); hourLine = new Line2D.Double(0,0,0,0); secondTime.start(); private void initPoint() width = getBounds().width; height = getBounds().height; pointSX0 = 0; pointSY0 = -(height/2*5/6); pointMX0 = 0; pointMY0 = -(height/2*4/5); pointHX0 = 0; pointHY0 = -(height/2*2/3); double angle = 6*Math.PI/180; for(int i = 0;i59;i+) pointSXi+1 = pointSXi*Math.cos(angle) - Math.sin(angle)*pointSYi; pointSYi+1 = pointSYi*Math.cos(angle) + pointSXi*Math.sin(angle); pointMXi+1 = pointMXi*Math.cos(angle) - Math.sin(angle)*pointMYi; pointMYi+1 = pointMYi*Math.cos(angle) + pointMXi*Math.sin(angle); pointHXi+1 = pointHXi*Math.cos(angle) - Math.sin(angle)*pointHYi; pointHYi+1 = pointHYi*Math.cos(angle) - pointHXi*Math.sin(angle); for(int i = 0;i60;i+) pointSXi = pointSXi+width/2; pointSYi = pointSYi+height/2; pointMXi = pointMXi+width/2; pointMYi = pointMYi+height/2; pointHXi = pointHXi+width/2; pointHYi = pointHYi+height/2; public void paintComponent(Graphics g) super.paintComponent(g); initPoint(); 設(shè)計(jì)總說(shuō)明 - 24 - for(int i = 0;i60;i+) int m = (int)pointSXi; int n = (int)pointSYi; if(i%5 =0) if(i=0|i=15|i=30|i=45) int k = 10; g.setColor(Color.orange); g.fillOval(m-k/2,n-k/2,k,k); else int k = 7; g.setColor(Color.orange); g.fillOval(m-k/2,n-k/2,k,k); else int k =2; g.setColor(Color.black); g.fillOval(m-k/2,n-k/2,k,k); g.fillOval(width/2-5,height/2-5,10,10); Graphics2D g_2d = (Graphics2D)g; g_2d.setColor(Color.red); g_2d.draw(secondLine); BasicStroke bs = new BasicStroke(2f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); g_2d.setStroke(bs); g_2d.setColor(Color.blue); g_2d.draw(muniteLine); bs = new BasicStroke(4f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER); g_2d.setStroke(bs); g_2d.setColor(Color.orange); g_2d.draw(hourLine); bs = new BasicStroke(8f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER); g_2d.setStroke(bs); public void actionPerformed(ActionEvent e) 設(shè)計(jì)總說(shuō)明 - 25 - if(e.getSource()= secondTime) date = new Date(); String s = date.toString(); hour = Integer.parseInt(s.substring(11,13); munite = Integer.parseInt(s.substring(14,16); second = Integer.parseInt(s.substring(17,19); int h = hour%12; a = second; b = munite; c = h*5+munite/12; secondLine.setLine(width/2,height/2,(int)pointSXa,(int)pointSYa); muniteLine.setLine(width/2,height/2,(int)pointMXb,(int)pointMYb); hourLine.setLine(width/2,height/2,(int)pointHXc,(int)pointHYc); repaint(); 4各種功能截圖 主界面 添加日志 設(shè)計(jì)總說(shuō)明 - 26 - 附 錄 2

注意事項(xiàng)

本文(《Java程序設(shè)計(jì)》課程設(shè)計(jì)日歷記事本)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!