




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
I軟件學(xué)院三級(jí)實(shí)踐課題課題名稱:日程管理小助手專業(yè):軟件工程(Java方向)班級(jí):學(xué)號(hào):學(xué)生姓名:指導(dǎo)教師:年月日
摘要隨著經(jīng)濟(jì)全球化、管理現(xiàn)代化的到來(lái),信息化建設(shè)已提到議事日程。計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)得到了迅速的發(fā)展和普及,互聯(lián)網(wǎng)的應(yīng)用和發(fā)展改變了全球的經(jīng)濟(jì)模式,企業(yè)管理模式也受到了極大的沖擊,使信息資源的共享和超越時(shí)空的交換成為了可能。在這個(gè)激烈競(jìng)爭(zhēng)的社會(huì),人們的雜亂事務(wù)越來(lái)越多,而且常常因?yàn)橐恍┬∈虑榘阎匾氖虑榈⒄`,對(duì)個(gè)人家庭以及企業(yè)造成巨大的損失。事件提醒也來(lái)越成為人們的一個(gè)救星,來(lái)化解各個(gè)事件間的矛盾。為了迎接殘酷的社會(huì)競(jìng)爭(zhēng),個(gè)人管理助手是每個(gè)個(gè)體都需要實(shí)用的一種提醒軟件。因此,毫無(wú)疑問(wèn)的說(shuō),日程管理無(wú)能對(duì)個(gè)人還是企業(yè)都是非常必要的。做好了日程管理個(gè)人可以更好地規(guī)劃自己生活,讓自己的生活多姿多彩,井然有序;讓企業(yè)能確保各項(xiàng)工作及時(shí)有效推進(jìn),在時(shí)間以及效率上能夠給企業(yè)帶來(lái)最大的受益,能夠在規(guī)定時(shí)間內(nèi)完成既定任務(wù)。日程管理的重要性在于可以將每天的工作和事務(wù)安排在日期中并做一個(gè)有效的記錄方便管理日常的工作和事務(wù),達(dá)到工作備忘的目的。同時(shí)也具有對(duì)員工日常工作進(jìn)行指導(dǎo)、監(jiān)督的作用。關(guān)鍵詞:辦公自動(dòng)化,計(jì)算機(jī),日程管理:日程管理小助手目錄TOC\o"1-3"\h\z摘要 I第1章系統(tǒng)分析 11.1問(wèn)題描述 11.2技術(shù)分析 11.3工程進(jìn)度計(jì)劃 2第2章系統(tǒng)功能設(shè)計(jì) 32.1功能分析 32.2系統(tǒng)設(shè)計(jì) 42.2.1數(shù)據(jù)庫(kù)表的設(shè)計(jì) 4圖2-2 43.1功能模塊 53.2主要界面實(shí)現(xiàn) 63.3部分功能實(shí)現(xiàn)的源代碼 10第4章結(jié)束語(yǔ) 20姓名:論文題目PAGE1:日程管理小助手PAGE20第1章系統(tǒng)分析1.1問(wèn)題描述在這個(gè)激烈競(jìng)爭(zhēng)的社會(huì),人們的雜亂事務(wù)越來(lái)越多,而且常常因?yàn)橐恍┬∈虑榘阎匾氖虑榈⒄`,對(duì)個(gè)人家庭以及企業(yè)造成巨大的損失。事件提醒也來(lái)越成為人們的一個(gè)救星,來(lái)化解各個(gè)事件間的矛盾。為了迎接殘酷的社會(huì)競(jìng)爭(zhēng),個(gè)人管理助手是每個(gè)個(gè)體都需要實(shí)用的一種提醒軟件。因此,毫無(wú)疑問(wèn)的說(shuō),日程管理無(wú)能對(duì)個(gè)人還是企業(yè)都是非常必要的。日程管理個(gè)人可以更好地規(guī)劃自己生活,讓自己的生活多姿多彩,井然有序;讓企業(yè)能確保各項(xiàng)工作及時(shí)有效推進(jìn),在時(shí)間以及效率上能夠給企業(yè)帶來(lái)最大的受益,能夠在規(guī)定時(shí)間內(nèi)完成既定任務(wù)。1.2技術(shù)分析在界面設(shè)計(jì)上,要盡量簡(jiǎn)化,是用圖形化頁(yè)面。在前面利用了上中下三個(gè)面板,最外面的布局管理用的是BorderLayout()。在最上面那一行用的是JMenu(),二級(jí)下拉菜單用的是JMenuItem()。在BorderLayout.CENTER中放的是圖形,用來(lái)美化外觀;BorderLayout.SOUTH放了四個(gè)JLabel用來(lái)提示已經(jīng)添加的事件提醒。在具體的時(shí)間選擇上要提供日歷,即使用Calender類。用此類可以避免用戶在輸入的時(shí)候輸入非法字符以及非法操作等造成異常。而且,要使用數(shù)據(jù)庫(kù)來(lái)記錄具體的時(shí)間,事件信息。在記錄時(shí)間的時(shí)候,考慮到用Date記錄時(shí)間要將Date轉(zhuǎn)化成字符串,在記錄的時(shí)候又得將字符串轉(zhuǎn)化為Date類型較為繁瑣。因此,在時(shí)間記錄方面,一直使用的字符串類型。避免相互轉(zhuǎn)化的繁瑣,以及在轉(zhuǎn)化石可能拋出的異常,簡(jiǎn)化了代碼,減少了工作量。事件記錄方面也是用的字符串類型,基于事件提醒時(shí),記錄字?jǐn)?shù)較少,用Text格式的又較為麻煩,因此選擇了字符串。但是,在幫助的通告項(xiàng)方面使用的為Text,字?jǐn)?shù)較多,需要選擇該格式。在細(xì)節(jié)方面,一定要捕捉異常,用到try()、catch(){},捕捉并處理異常。在時(shí)間輸入時(shí),默認(rèn)不輸入時(shí)間為本地時(shí)間。后又一個(gè)時(shí)間判斷,用到if語(yǔ)句,當(dāng)獲得的時(shí)間與本地時(shí)間相同時(shí),提示用戶未輸入時(shí)間且重新輸入。事件提醒內(nèi)容(equals(“”)),提示用戶輸入事件提醒內(nèi)容。在異常處理方面做到捕捉異常,處理異常,并且合理;在操作性方面,要人性化。當(dāng)提示用戶輸入的內(nèi)容,或操作非法時(shí),用重新返回到原頁(yè)面,而不是異?;蛲顺觥S玫絛ispose()讓本頁(yè)面“消失”,在重新調(diào)用原來(lái)的頁(yè)面。在提醒用戶方面,獲得本地的時(shí)間與提醒時(shí)間相同時(shí),用到ShowMessageDialog()提示,用戶在某時(shí)間要做某事。1.3工程進(jìn)度計(jì)劃本課題小組共兩人,一個(gè)主要負(fù)責(zé)前期的需求分析,中期的一些異常處理、具體的修改,最后的一些總結(jié),代碼優(yōu)化。另外,我主要負(fù)責(zé)部分功能的實(shí)現(xiàn),對(duì)部分代碼的修改、優(yōu)化。在三周內(nèi)可以基本結(jié)束課題的所有內(nèi)容,完成知道老師對(duì)本課題的指導(dǎo),安排的具體的修改工作。當(dāng)然,在三周的時(shí)間里,肯定不是剛開(kāi)始就立即著手開(kāi)始進(jìn)入課題實(shí)踐階段。在第一周內(nèi),主要對(duì)課程管理小助手需要完成的必要功能、參考別人做過(guò)的功能以及其他人做的優(yōu)點(diǎn)以及不足的地方、綜合我們學(xué)過(guò)的知識(shí)選擇我們要完成的功能,總結(jié)我們需要實(shí)現(xiàn)的方法以及復(fù)習(xí)或者學(xué)習(xí)實(shí)現(xiàn)該功能的方法。第二周開(kāi)始著手進(jìn)入代碼編譯階段,具體的代碼完成后,部分要修改或優(yōu)化的由我的同伴完成。第三周前段時(shí)間,主要對(duì)已完成的系統(tǒng)進(jìn)行測(cè)試,對(duì)一些未處理的異常進(jìn)行捕捉并處理。后段時(shí)間進(jìn)行課題報(bào)告的完成以及總結(jié)三周里的實(shí)踐心得,系統(tǒng)的完成滿意度以及學(xué)習(xí)方法的總結(jié)。 第2章系統(tǒng)功能設(shè)計(jì)2.1功能分析日程管理日程管理幫助幫助刪除事件提醒查看事件提醒設(shè)置刪除事件提醒查看事件提醒設(shè)置添加事件提醒提醒內(nèi)容刪除全部提醒內(nèi)容刪除全部字體大小查詢?nèi)孔煮w大小背景色按時(shí)間查詢提醒時(shí)間字體大小查詢?nèi)孔煮w大小背景色按時(shí)間查詢提醒時(shí)間按時(shí)間刪除刪除全部圖2-1如圖2-1所示,用戶使用本系統(tǒng)時(shí),可以根據(jù)日歷表選擇事件提醒的時(shí)間,輸入事件提醒的內(nèi)容。用戶可以選擇按時(shí)間刪除和全部刪除兩種刪除方式,也可以通過(guò)幫助,來(lái)了解本軟件的功能以及操作步驟。查看事件提醒可以通過(guò)時(shí)間或查詢?nèi)績(jī)煞N查詢方式查詢,在設(shè)置方面,可以設(shè)置系統(tǒng)的字體顏色,大小以及背景色。在美化系統(tǒng)首頁(yè)方面,用了Icon對(duì)象,添加了圖片,利用JPanel,JLabel,JMenu,JMenuItem來(lái)圖形化界面。在面板的下方,有四個(gè)JLabel來(lái)顯示要提示的事件提醒內(nèi)容。根據(jù)事件的緊急程度來(lái)定義不同的顏色來(lái)區(qū)分等級(jí),在添加完事件提醒內(nèi)容之后,會(huì)顯示到系統(tǒng)主業(yè)的下方JLabel上。也可以調(diào)節(jié)字體的大小,顏色,背景色。查詢、刪除事件提醒可以選擇全部或?qū)我粚?duì)象進(jìn)行操作,可以在日歷中選擇事件提醒的事件以及提示所有非法的操作以及提示用戶再次輸入。2.2系統(tǒng)設(shè)計(jì)2.2.1數(shù)據(jù)庫(kù)表的設(shè)計(jì)表2-2Schedule日程安排配置表字段名稱類型大小約束說(shuō)明N201時(shí)間編號(hào)thingsVARCHAR900事件提醒daytimeVARCHAR300提醒時(shí)間圖2-2如圖2-2所示,數(shù)據(jù)庫(kù)中有一張表,其屬性為時(shí)間編號(hào),事件提醒內(nèi)容,提醒時(shí)間等內(nèi)容。No.定義為int類型,為事件的序號(hào),設(shè)置為主鍵。用數(shù)據(jù)庫(kù)來(lái)記錄具體的時(shí)間,事件信息。在記錄時(shí)間的時(shí)候,考慮到用Date記錄時(shí)間要將Date轉(zhuǎn)化成字符串,在記錄的時(shí)候又得將字符串轉(zhuǎn)化為Date類型較為繁瑣。因此,在時(shí)間記錄方面,一直使用的字符串類型。避免相互轉(zhuǎn)化的繁瑣,以及在轉(zhuǎn)化石可能拋出的異常,簡(jiǎn)化了代碼,減少了工作量。事件記錄方面也是用的字符串類型,基于事件提醒時(shí),記錄字?jǐn)?shù)較少,用Text格式的又較為麻煩,因此選擇了字符串。但是,在幫助的通告項(xiàng)方面使用的為Text,字?jǐn)?shù)較多,需要選擇該格式。在細(xì)節(jié)方面,一定要捕捉異常,用到try()、catch(){},捕捉并處理異常。
第3章系統(tǒng)實(shí)現(xiàn)3.1功能模塊圖3-1如圖3-1所示,在主界面方面,添加了一張背景圖片來(lái)美化桌面,下面是事件消息的提醒,按照時(shí)間的先后順序根據(jù)顏色的不同不區(qū)分事件要處理的緊急度。最上面一行是菜單欄,主要是簡(jiǎn)化按鈕所占用的空間。在界面設(shè)計(jì)上,要盡量簡(jiǎn)化,是用圖形化頁(yè)面。在前面利用了上中下三個(gè)面板,最外面的布局管理用的是BorderLayout()。在最上面那一行用的是JMenu(),二級(jí)下拉菜單用的是JMenuItem()。在BorderLayout.CENTER中放的是圖形,用來(lái)美化外觀;BorderLayout.SOUTH放了四個(gè)JLabel用來(lái)提示已經(jīng)添加的事件提醒。在具體的時(shí)間選擇上要提供日歷,即使用Calender類。用此類可以避免用戶在輸入的時(shí)候輸入非法字符以及非法操作等造成異常。在操作性方面,要人性化。當(dāng)提示用戶輸入的內(nèi)容,或操作非法時(shí),用重新返回到原頁(yè)面,而不是異?;蛲顺?。用到dispose()讓本頁(yè)面“消失”,在重新調(diào)用原來(lái)的頁(yè)面。在提醒用戶方面,獲得本地的時(shí)間與提醒時(shí)間相同時(shí),用到ShowMessageDialog()提示,用戶在某時(shí)間要做某事。在細(xì)節(jié)方面,一定要捕捉異常,用到try()、catch(){},捕捉并處理異常。在時(shí)間輸入時(shí),默認(rèn)不輸入時(shí)間為本地時(shí)間。后又一個(gè)時(shí)間判斷,用到if語(yǔ)句,當(dāng)獲得的時(shí)間與本地時(shí)間相同時(shí),提示用戶未輸入時(shí)間且重新輸入。事件提醒內(nèi)容(equals(“”)),提示用戶輸入事件提醒內(nèi)容。在異常處理方面做到捕捉異常,處理異常,并且合理;在操作性方面,要人性化。當(dāng)提示用戶輸入的內(nèi)容,或操作非法時(shí),用重新返回到原頁(yè)面,而不是異常或退出。用到dispose()讓本頁(yè)面“消失”,在重新調(diào)用原來(lái)的頁(yè)面。在提醒用戶方面,獲得本地的時(shí)間與提醒時(shí)間相同時(shí),用到ShowMessageDialog()提示,用戶在某時(shí)間要做某事。3.2主要界面實(shí)現(xiàn)1.圖3-2-1圖3-2-2添加界面,是可以根據(jù)日歷的方式來(lái)進(jìn)行時(shí)間的選擇;如果不驚醒時(shí)間選擇的話,默認(rèn)時(shí)間是本地時(shí)間。如果不輸入事件信息的話,利用if判斷,若等于本地時(shí)間,則提示,沒(méi)有輸入時(shí)間提醒的時(shí)間,會(huì)返回時(shí)間選擇頁(yè)面,重新進(jìn)行時(shí)間的獲取。在事件提醒內(nèi)容方面,如果輸入的信息提示為空,會(huì)提示未輸入,返回頁(yè)面重新輸入。在具體的時(shí)間選擇上要提供日歷,即使用Calender類。用此類可以避免用戶在輸入的時(shí)候輸入非法字符以及非法操作等造成異常。而且,要使用數(shù)據(jù)庫(kù)來(lái)記錄具體的時(shí)間,事件信息。在記錄時(shí)間的時(shí)候,考慮到用Date記錄時(shí)間要將Date轉(zhuǎn)化成字符串,在記錄的時(shí)候又得將字符串轉(zhuǎn)化為Date類型較為繁瑣。因此,在時(shí)間記錄方面,一直使用的字符串類型。避免相互轉(zhuǎn)化的繁瑣,以及在轉(zhuǎn)化石可能拋出的異常,簡(jiǎn)化了代碼,減少了工作量。事件記錄方面也是用的字符串類型,基于事件提醒時(shí),記錄字?jǐn)?shù)較少,用Text格式的又較為麻煩,因此選擇了字符串。但是,在幫助的通告項(xiàng)方面使用的為Text,字?jǐn)?shù)較多,需要選擇該格式。在細(xì)節(jié)方面,一定要捕捉異常,用到try()、catch(){},捕捉并處理異常。在時(shí)間輸入時(shí),默認(rèn)不輸入時(shí)間為本地時(shí)間。后又一個(gè)時(shí)間判斷,用到if語(yǔ)句,當(dāng)獲得的時(shí)間與本地時(shí)間相同時(shí),提示用戶未輸入時(shí)間且重新輸入。事件提醒內(nèi)容(equals(“”)),提示用戶輸入事件提醒內(nèi)容。在異常處理方面做到捕捉異常,處理異常,并且合理;在操作性方面,要人性化。當(dāng)提示用戶輸入的內(nèi)容,或操作非法時(shí),用重新返回到原頁(yè)面,而不是異常或退出。用到dispose()讓本頁(yè)面“消失”,在重新調(diào)用原來(lái)的頁(yè)面。在提醒用戶方面,獲得本地的時(shí)間與提醒時(shí)間相同時(shí),用到ShowMessageDialog()提示,用戶在某時(shí)間要做某事。2.刪除界面3-3如圖3-3所示,在刪除方式方面,可以選擇全部刪除或者單一刪除。在刪除方式選擇方面用的是JOptionPane.ShowOptionDialog(),利用if判斷選擇的序號(hào),根據(jù)用戶選擇的功能,執(zhí)行相應(yīng)的方法。當(dāng)選擇的內(nèi)容為“按時(shí)間刪除”內(nèi)容時(shí),在數(shù)據(jù)庫(kù)方面用到的sql語(yǔ)句為(“deletefromSchedulewheredaytime=‘”+date+”’”);可以根據(jù)時(shí)間刪除事件提醒的內(nèi)容,在首頁(yè)面板的JLabel上顯示的就沒(méi)有本條事件提醒內(nèi)容;而在選擇的內(nèi)容為“刪除所有事件提醒”內(nèi)容時(shí),在數(shù)據(jù)庫(kù)方面用到的sql語(yǔ)句為(“deletefromSchedule“);可以根據(jù)刪除全部的事件提醒的內(nèi)容,在首頁(yè)面板的JLabel上顯示的就為空;3.查詢界面3-4如圖3-3所示,在刪除方式方面,可以選擇全部查詢或者單一查詢。在刪除方式選擇方面用的是JOptionPane.ShowOptionDialog(),利用if判斷選擇的序號(hào),根據(jù)用戶選擇的功能,執(zhí)行相應(yīng)的方法。當(dāng)選擇的內(nèi)容為“按時(shí)間查詢”內(nèi)容時(shí),在數(shù)據(jù)庫(kù)方面用到的sql語(yǔ)句為(“selectNo,daytime,thingsfromSchedulewheredaytime=‘”+date+”’”);可以根據(jù)時(shí)間查詢事件提醒的內(nèi)容,在showMessageDialog消息彈出一個(gè)消息對(duì)話框,會(huì)提示查詢成功以及查詢的結(jié)果;而在選擇的內(nèi)容為“查詢所有事件提醒”內(nèi)容時(shí),在數(shù)據(jù)庫(kù)方面用到的sql語(yǔ)句為(“select*fromSchedule“);可以查詢?nèi)康氖录嵝训膬?nèi)容,在彈出的面板中會(huì)顯示所查詢的內(nèi)容;3.3部分功能實(shí)現(xiàn)的源代碼importjava.util.Date;importjava.util.Calendar;importjava.text.SimpleDateFormat;importjava.text.ParseException;importjava.awt.Color;importjava.awt.Font;importjava.awt.Point;importjava.awt.Dimension;importjava.awt.BorderLayout;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjava.awt.Cursor;importjava.awt.Frame;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;//importjavax.swing.JFrame;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JLabel;importjavax.swing.JSpinner;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.SpinnerNumberModel;importjavax.swing.SwingUtilities;importjavax.swing.SwingConstants;importjavax.swing.event.ChangeListener;importjavax.swing.event.ChangeEvent;importjavax.swing.border.LineBorder;@SuppressWarnings("serial")publicclassCalextendsJFrame{ finalStringshowMessageDialog="未添加時(shí)間信息,請(qǐng)重新添加!!"; privateStringgetDate(){ //TODOAuto-generatedmethodstub Dated=newDate(); SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddkk"); Stringstr=sdf.format(d);//System.out.println("Thedateis:"+str); returnstr; }publicCal(){finalDateChooserJButtonbtn=newDateChooserJButton();finalJTextFieldjt1=newJTextField(30);finalJButtonbtn2=newJButton("確定");finalJLabeljl=newJLabel("請(qǐng)輸入事件提醒的內(nèi)容:");if(btn.getText()==getDate()){ JOptionPane.showMessageDialog(null,showMessageDialog);}if((jt1.getText()).equals(null)){ JOptionPane.showMessageDialog(null,"未添加提示信息,請(qǐng)重新添加?。?); }btn2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ if(btn.getText()==getDate()){ JOptionPane.showMessageDialog(null,"未添加時(shí)間信息,請(qǐng)重新添加??!"); } //System.out.print(getDate()); if(jt1.getText()==null){ JOptionPane.showMessageDialog(null,"未添加提示信息,請(qǐng)重新添加!!"); } JOptionPane.showMessageDialog(null,"未添加提示信息,請(qǐng)重新添加??!"); JOptionPane.showMessageDialog(null,"事件提醒時(shí)間"+btn.getText()+"獲取成功。");dispose(); System.out.println(jt1.getText()); ScheduleManagementsm=newScheduleManagement(); sm.setSize(600,500); sm.setLocation(400,200);}});this.getContentPane().setLayout(newBorderLayout());this.getContentPane().add(btn,newBorderLayout().NORTH);this.getContentPane().add(jl,newBorderLayout().WEST);this.getContentPane().add(jt1,newBorderLayout().EAST);this.getContentPane().add(btn2,newBorderLayout().SOUTH);this.setSize(500,400);this.setLocation(400,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}@SuppressWarnings("unused")publicstaticvoidmain(String[]args){Calcal=newCal();}}@SuppressWarnings("serial")classDateChooserJButtonextendsJButton{privateDateChooserdateChooser=null;privateStringpreLabel="";publicDateChooserJButton(){this(getNowDate());}publicDateChooserJButton(SimpleDateFormatdf,StringdateString){this();setText(df,dateString);}publicDateChooserJButton(Datedate){this("",date);}publicDateChooserJButton(StringpreLabel,Datedate){if(preLabel!=null)this.preLabel=preLabel;setDate(date);setBorder(null);setCursor(newCursor(Cursor.HAND_CURSOR));super.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(dateChooser==null)dateChooser=newDateChooser();Pointp=getLocationOnScreen();p.y=p.y+30;dateChooser.showDateChooser(p);}});}privatestaticDategetNowDate(){returnCalendar.getInstance().getTime();}privatestaticSimpleDateFormatgetDefaultDateFormat(){returnnewSimpleDateFormat("yyyy-MM-ddHH");}//覆蓋父類的方法publicvoidsetText(Strings){Datedate;try{date=getDefaultDateFormat().parse(s);}catch(ParseExceptione){date=getNowDate();}setDate(date);}publicvoidsetText(SimpleDateFormatdf,Strings){Datedate;try{date=df.parse(s);}catch(ParseExceptione){date=getNowDate();}setDate(date);}publicvoidsetDate(Datedate){super.setText(preLabel+getDefaultDateFormat().format(date));}publicDategetDate(){StringdateString=getText().substring(preLabel.length());try{returngetDefaultDateFormat().parse(dateString);}catch(ParseExceptione){returngetNowDate();}}//覆蓋父類的方法使之無(wú)效publicvoidaddActionListener(ActionListenerlistener){}privateclassDateChooserextendsJPanelimplementsActionListener,ChangeListener{intstartYear=1980;//默認(rèn)【最小】顯示年份intlastYear=2050;//默認(rèn)【最大】顯示年份intwidth=400;//界面寬度intheight=600;//界面高度ColorbackGroundColor=Color.gray;//底色//月歷表格配色//ColorpalletTableColor=Color.GRAY;//日歷表底色ColortodayBackColor=Color.GREEN;//今天背景色ColorweekFontColor=Color.blue;//星期文字色ColordateFontColor=Color.black;//日期文字色ColorweekendFontColor=Color.red;//周末文字色//控制條配色//ColorcontrolLineColor=Color.GRAY;//控制條底色ColorcontrolTextColor=Color.white;//控制條標(biāo)簽文字色ColorrbFontColor=Color.white;//RoundBox文字色ColorrbBorderColor=Color.red;//RoundBox邊框色ColorrbButtonColor=Color.pink;//RoundBox按鈕色ColorrbBtFontColor=Color.red;//RoundBox按鈕文字色JDialogdialog;JSpinneryearSpin;JSpinnermonthSpin;JSpinnerhourSpin;JButton[][]daysButton=newJButton[6][7];DateChooser(){setLayout(newBorderLayout());setBorder(newLineBorder(backGroundColor,2));setBackground(backGroundColor);JPaneltopYearAndMonth=createYearAndMonthPanal();add(topYearAndMonth,BorderLayout.NORTH);JPanelcenterWeekAndDay=createWeekAndDayPanal();add(centerWeekAndDay,BorderLayout.CENTER);}privateJPanelcreateYearAndMonthPanal(){Calendarc=getCalendar();intcurrentYear=c.get(Calendar.YEAR);intcurrentMonth=c.get(Calendar.MONTH)+1;intcurrentHour=c.get(Calendar.HOUR_OF_DAY)+1;JPanelresult=newJPanel();result.setLayout(newFlowLayout());result.setBackground(controlLineColor);yearSpin=newJSpinner(newSpinnerNumberModel(currentYear,currentYear,lastYear,1));yearSpin.setPreferredSize(newDimension(48,20));yearSpin.setName("Year");yearSpin.setEditor(newJSpinner.NumberEditor(yearSpin,"####"));yearSpin.addChangeListener(this);result.add(yearSpin);JLabelyearLabel=newJLabel("年");yearLabel.setForeground(controlTextColor);result.add(yearLabel);monthSpin=newJSpinner(newSpinnerNumberModel(currentMonth,currentMonth,12,1));monthSpin.setPreferredSize(newDimension(35,20));monthSpin.setName("Month");monthSpin.addChangeListener(this);result.add(monthSpin);JLabelmonthLabel=newJLabel("月");monthLabel.setForeground(controlTextColor);result.add(monthLabel);hourSpin=newJSpinner(newSpinnerNumberModel(currentHour,currentHour,23,1));hourSpin.setPreferredSize(newDimension(35,20));hourSpin.setName("Hour");hourSpin.addChangeListener(this);result.add(hourSpin);JLabelhourLabel=newJLabel("時(shí)");hourLabel.setForeground(controlTextColor);result.add(hourLabel);returnresult;}privateJPanelcreateWeekAndDayPanal(){Stringcolname[]={"日","一","二","三","四","五","六"};JPanelresult=newJPanel();//設(shè)置固定字體,以免調(diào)用環(huán)境改變影響界面美觀result.setFont(newFont("宋體",Font.PLAIN,12));result.setLayout(newGridLayout(7,7));result.setBackground(Color.white);JLabelcell;for(inti=0;i<7;i++){cell=newJLabel(colname[i]);cell.setHorizontalAlignment(JLabel.CENTER);if(i==0||i==6)cell.setForeground(weekendFontColor);elsecell.setForeground(weekFontColor);result.add(cell);}intactionCommandId=0;for(inti=0;i<6;i++)for(intj=0;j<7;j++){JButtonnumberButton=newJButton();numberButton.setBorder(null);numberButton.setHorizontalAlignment(SwingConstants.CENTER);numberButton.setActionCommand(String.valueOf(actionCommandId));numberButton.addActionListener(this);numberButton.setBackground(palletTableColor);numberButton.setForeground(dateFontColor);if(j==0||j==6)numberButton.setForeground(weekendFontColor);elsenumberButton.setForeground(dateFontColor);daysButton[i][j]=numberButton;result.add(numberButton);actionCommandId++;}returnresult;}privateJDialogcreateDialog(Frameowner){JDialogresult=newJDialog(owner,"日期時(shí)間選擇",true);result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);result.getContentPane().add(this,BorderLayout.CENTER);result.pack();result.setSize(width,height);returnresult;}voidshowDateChooser(Pointposition){Frameowner=(Frame)SwingUtilities.getWindowAncestor(DateChooserJButton.this);if(dialog==null||dialog.getOwner()!=owner)dialog=createDialog(owner);dialog.setLocation(getAppropriateLocation(owner,position));flushWeekAndDay();dialog.show();}PointgetAppropriateLocation(Frameowner,Pointposition){Pointresult=newPoint(position);Pointp=owner.getLocation();intoffsetX=(position.x+width)-(p.x+owner.getWidth());intoffsetY=(position.y+height)-(p.y+owner.getHeight());if(offsetX>0){result.x-=offsetX;}if(offsetY>0){result.y-=offsetY;}returnresult;}privateCalendargetCalendar(){Calendarresult=Calendar.getInstance();result.setTime(getDate());returnresult;}privateintgetSelectedYear(){return((Integer)yearSpin.getValue()).intValue();}privateintgetSelectedMonth(){return((Integer)monthSpin.getValue()).intValue();}privateintgetSelectedHour(){return((Integer)hourSpin.getValue()).intValue();}privatevoiddayColorUpdate(booleanisOldDay){Calendarc=getCalendar();intday=c.get(Calendar.DAY_OF_MONTH);c.set(Calendar.DAY_OF_MONTH,1);intactionCommandId=day-2+c.get(Calendar.DAY_OF_WEEK);inti=actio
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第2.6講 指數(shù)與指數(shù)函數(shù)(解析版)-2024年高考數(shù)學(xué)一輪復(fù)習(xí)精講精練寶典(新高考專用)
- 浙教版2023小學(xué)信息技術(shù)六年級(jí)上冊(cè)《算法的多樣性》教學(xué)設(shè)計(jì)及反思
- (一模)萍鄉(xiāng)市2025年高三第一次模擬考試歷史試卷(含答案解析)
- 2025年B2B營(yíng)銷業(yè)務(wù) AI提示詞手冊(cè)
- 陶瓷攔水帶施工方案
- 高樓地鐵隧道施工方案
- 砂漿基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年山東聊城高三一模高考數(shù)學(xué)試卷試題(含答案詳解)
- 2025年藥具科技工作培訓(xùn)標(biāo)準(zhǔn)教案
- 寫贈(zèng)予房產(chǎn)合同范例
- 2024專用意定監(jiān)護(hù)協(xié)議模板及條款明細(xì)版
- 米勒黑曼策略銷售培訓(xùn)
- 2025高考語(yǔ)文復(fù)習(xí)之60篇古詩(shī)文原文+翻譯+賞析+情景默寫
- 2020-2024年五年高考語(yǔ)文真題分類匯編專題04 古代詩(shī)歌鑒賞(解析版)
- 女神節(jié)花藝沙龍活動(dòng)
- 大劇院音視頻系統(tǒng)工程調(diào)試方案
- 社區(qū)商業(yè)招商與運(yùn)營(yíng)管理方案
- 人教PEP版(2024)三年級(jí)上冊(cè)英語(yǔ)Unit 6《Useful numbers》單元作業(yè)設(shè)計(jì)
- 浙江省寧波市九校2023-2024學(xué)年高二下學(xué)期期末聯(lián)考數(shù)學(xué)試題2
- 事業(yè)單位公開(kāi)招聘分類考試公共科目筆試考試大綱2022年版
- 8 歌曲 《郵遞員叔叔來(lái)了》課件(13張內(nèi)嵌視頻)
評(píng)論
0/150
提交評(píng)論