Java日历记事本课程设计报告在设计日历记事本时,需要编写6个JAVA源文件:、、、、和效果图如下. CalendarWindow类import .*;import .*;import .*;import .*;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;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor= ;public CalendarWindow(){dir=new File("./dailyRecord");();showDay=new JTextField[42];for(int i=0;i<;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=();(new Date());year=;month=+1;day=;(year);(month);(day);(calendarMessage);(showDay);(year,month,day);();doMark();calendarImage=new CalendarImage();(new File(""));clock=new Clock();JSplitPane splitV1=new JSplitPane,calendarPad,calendarImage);JSplitPane splitV2=new JSplitPane,notePad,clock);JSplitPane splitH=new JSplitPane,splitV1,splitV2);add(splitH,;showYear=new JTextField(""+year,6);(new Font("TimesRoman",,12));;showMonth=new JTextField(""+month,4);(new Font("TimesRoman",,12));;nextYear=new JButton("下年");previousYear=new JButton("上年");nextMonth=new JButton("下月");previousMonth=new JButton("上月");(this);(this);(this);(this);JPanel north=new JPanel();(previousYear);(showYear);(nextYear);(previousMonth);(showMonth);(nextMonth);add(north,;saveDailyRecord=new JButton("保存日志");deleteDailyRecord=new JButton("删除日志");readDailyRecord=new JButton("读取日志");(this);(this);(this);JPanel pSouth=new JPanel();(saveDailyRecord);(deleteDailyRecord);(readDailyRecord);add(pSouth,;getPicture=new JButton("选择日历图像");(this);(getPicture);add(pSouth,;setVisible(true);setBounds(60,60,660,480);validate();setDefaultCloseOperation;}public void actionPerformed(ActionEvent e){ if()==nextYear){year++;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==previousYear){year--;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==nextMonth){month++;if(month<1) month=12;(""+month);(month);(calendarMessage);();(year,month,day);doMark();}else if()==previousMonth){month--;if(month<1) month=12;(""+month);(month);(calendarMessage);();(year,month,day);doMark();}else if()==showYear){String s=().trim();char a[]=();boolean boo=false;for(int i=0;i<;i++)if(!(a[i])))boo=true;if(boo==true)(this, "您输入了非法年份","警告",;else if(boo==false)year=(s);(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==saveDailyRecord){(dir,year,month,day);doMark();}else if()==deleteDailyRecord){(dir,year,month,day);doMark();}else if()==readDailyRecord){(dir,year,month,day);}else if () ==getPicture ) {FileDialog fd=new FileDialog(this,"打开文件对话框");(true);String fileopen = null, filename = null;fileopen = ();filename = ();(new File(fileopen,filename));}}public void mousePressed(MouseEvent e){JTextField text=(JTextField)();String str=().trim();try{ day=(str);}catch(NumberFormatException exp){}(day);(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)();;}public void focusLost(FocusEvent e){Component com=(Component)();(backColor);}public void doMark(){for(int i=0;i<;i++){showDay[i].removeAll();String str=showDay[i].getText().trim();try{int n=(str);if(isHaveDailyRecord(n)==true){JLabel mess=new JLabel("有");(new Font("TimesRoman",,11));;showDay[i].add(mess);}}catch(Exception exp){}}();();}public boolean isHaveDailyRecord(int n){ String key=""+year+""+month+""+n;String [] dayFile=();boolean boo=false;for(int k=0;k<;k++){if(dayFile[k].equals(key+".txt")){boo=true;break;}}return boo;}public String getPicture_address() {String address = null;try {InputStream outOne = new FileInputStream("");ObjectInputStream outTwo = new ObjectInputStream(outOne);try {address = (String) ();} catch (Exception ex) {}();} catch (IOException eee) {}if (address != null) {return address;} else {return "";}}public void actionPerformed1(ActionEvent e) {if ().equals("更改图片背景")) {FileDialog dia = new FileDialog(this, "选择图片", ;(true);(true);if (() != null) && () != null)) {try {FileOutputStream inOne = new FileOutputStream("");ObjectOutputStream inTwo = new ObjectOutputStream(inOne);() + ());();} catch (IOException ee) {}String picturename = getPicture_address();(new File(picturename));}}}public static void main(String args[]){new CalendarWindow();}}CalendarPad类import .*;import .*;import .*;import 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();(new GridLayout(1,7));center=new JPanel();(new GridLayout(6,7));add(center , );add(north, );title=new JLabel[7];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setFont(new Font("TimesRoman", ,12));title[j].setText(星期[j]);title[j].setHorizontalAlignment;title[j].setBorder());(title[j]);}title[0].setForeground;title[6].setForeground;}public void setShowDayTextField(JTextField[]text){showDay=text;for(int i=0;i<;i++){showDay[i].setFont(new Font("TimesRoman", ,15));showDay[i].setHorizontalAlignment;showDay[i].setEditable(false);(showDay[i]);}}public void setCalendarMessage (CalendarMessage calendarMessage){=calendarMessage;}public void showMonthCalendar(){String[] a=();for(int i=0;i<42;i++)showDay[i].setText(a[i]);validate();}}CalendarMesssage类import class CalendarMessage {int year=-1,month=-1,day=-1;public int getYear(){return year;}public void setMonth(int month){if(month<=12&&month>=1)=month;else=1;}public int getMonth(){return month;}public void setDay(int day){=day;}public int getDay(){return day ;}public String []getMonthCalendar(){String[] day=new String[42];Calendar rili =();(year, month-1,1);int 星期几= )-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)&&(year%100!=0)||year%400==0))dayAmount=29;elsedayAmount=28;for(int i=0;i<星期几;i++)day[i]="";for(int i=星期几,n=1;i<星期几+dayAmount;i++){day[i]=(n);n++;}for(int i=星期几+dayAmount;i<42;i++)day[i]="";return day;}public void setYear(int year) {= year;}}NotePad类import .*;import .*;import .*;import class NotePad extends JPanel implements ActionListener { JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() {showMessage = new JTextField();;(new Font("TimesRoman", , 16));;;());(false);menu = new JPopupMenu();itemCopy = new JMenuItem("复制");itemCut = new JMenuItem("剪切");itemPaste = new JMenuItem("粘贴");itemClear = new JMenuItem("清空");btn = new JMenuItem("字体");(this);(this);(this);(this);(this);(itemCopy);(itemCut);(itemPaste);(itemClear);(btn);text = new JTextArea(10, 10);(new MouseAdapter() {public void mousePressed(MouseEvent e) {if () ==(text, (), ());}});setLayout(new BorderLayout());add(showMessage, ;add(new JScrollPane(text), ;}public void setShowMessage(int year, int month, int day) { ("" + year + "年" + month + "月" + day + "日");;(new Font("宋体", , 15));}public void save(File dir, int year, int month, int day) {String dailyContent = ();String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "年" + month + "月" + day+ "已有日志,将新的内容添加到日志吗";int ok = (this, m, "",, ;if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {}}} else {String m = "" + year + "年" + month + "月" + day + "还没有日志,保存日志吗";int ok = (this, m, "询问",, ;if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {}}}}public void delete(File dir, int year, int month, int day) { String key = "" + year + "" + month + "" + day;String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "删除" + year + "年" + month + "月" + day + "日的日志吗";int ok = (this, m, "询问",, ;if (ok == {String fileName = "" + year + "" + month + "" + day + ".txt";File deleteFile = new File(dir, fileName);();}}else {String m = "" + year + "" + month + "" + day + "";(this, m, "提示",;}}public void read(File dir, int year, int month, int day) { String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "" + month + "" + day + "";int ok = (this, m, "询问",, ;if (ok == {(null);try {File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while ((s = ()) != null)(s + "\n");();();} catch (IOException exp) {}}} else {String m = "" + year + "" + month + "" + day + "";(this, m, "提示",;}}public void actionPerformed(ActionEvent e) {if () == itemCopy)();else if () == itemCut)();else if () == itemPaste)();else if () == itemClear)(null);if () == btn) {JFontDialog nFD = new JFontDialog("选择字体");(true);(true);;}}}class JFontDialog extends JDialog {private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) {Container container = getContentPane();(new BorderLayout());JPanel panel = new JPanel();(new GridLayout(2, 1));JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4));FontView = new JPanel(new GridLayout(1, 2));example = "AaBbCcDdEe";FontResolvent = new JLabel(example, ;;ListSelectionListener selectionListener = new ListSelectionListener() {public void valueChanged(ListSelectionEvent e) {if (((JList) ()).getName().equals("polic")) {((String) ());(new Font(),().getStyle(), FontResolvent.getFont().getSize()));}if (((JList) ()).getName().equals("style")) {((String) ());(new Font().getFontName(), (),().getSize()));}if (((JList) ()).getName().equals("size")) {((String) ());try {());} catch (Exception excepInt) {().getSize()+ "");}(new Font().getFontName(), ().getStyle(),())));}}};KeyListener keyListener = new KeyListener() {public void keyPressed(KeyEvent e) {if () == 10) {if (((JTextField) ()).getName().equals("polic")) {(new Font(),().getStyle(),().getSize()));}if (((JTextField) ()).getName().equals("style")) {((String) fontstyle.getSelectedValue());(new Font().getFontName(), (),().getSize()));}if (((JTextField) ()).getName().equals("size")) {try {());} catch (Exception excepInt) {().getSize()+ "");}(new Font().getFontName(), ().getStyle(), (fontsizet.getText())));}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};etLocalGraphicsEnvironment().getAllFonts();int taille = ;String[] policnames = new String[taille];for (int i = 0; i < taille; i++) {policnames[i] = fonts[i].getName();}fontpolics = new JList(policnames);("polic");;(selectionListener);(6);fontpolict = new JTextField(policnames[0]);("polic");(keyListener);JScrollPane jspfontpolic = new JScrollPane(fontpolics);(new BoxLayout(Fontpolic, );(fontpolict);(jspfontpolic);;import .*;import .*;public class CalendarImage extends JPanel{File imageFile;Image image;Toolkit tool;CalendarImage(){tool=getToolkit();}public void setImageFile(File f){imageFile=f;try{ image=().toURL());}catch(Exception exp){}repaint();}public void paintComponent(Graphics g){(g);int w=getBounds().width;int h=getBounds().height;(image, 0, 0, w, h, this);}}Clock类import class Clock extends JPanel implements ActionListener {Date date;secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;Line2D m=new (0,0,0,0);Line2D s=new (0,0,0,0);int a,b,c,width,height;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock(){setBackground;initPoint();secondTime=new secondLine=new (0,0,0,0);muniteLine=new (0,0,0,0);hourLine=new (0,0,0,0);();}private void initPoint(){width=getBounds().width;height=getBounds().height;pointSX[0]=0;pointSY[0]=-height/2*5/6;pointMX[0]=0;pointMY[0]=-(height/2*4/5);pointHX[0]=0;pointHY[0]=-(height/2*2/3);double angle=6*180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*(angle)(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*(angle)+pointSX[i]*(angle);pointMX[i+1]=pointMX[i]*(angle)(angle)*pointMY[i];pointMY[i+1]=pointMY[i]*(angle)+pointMX[i]*(angle);pointHX[i+1]=pointHX[i]*(angle)(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*(angle)+pointHX[i]*(angle);}for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+width/2;pointSY[i]=pointSY[i]+height/2;pointMX[i]=pointMX[i]+width/2;pointMY[i]=pointMY[i]+height/2;pointHX[i]=pointHX[i]+width/2; pointHY[i]=pointHY[i]+height/2;}}public void paintComponent(Graphics g){(g);initPoint();for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){if(i==0||i==15||i==30||i==45){int k=10;;(m-k/2, n-k/2, k, k);}else{int k=7;);(m-k/2, n-k/2, k, k);}}else{int k=2;;(m-k/2, n-k/2, k, k);}}(width/2-5, height/2-5, 10, 10);Graphics2D g_2d=(Graphics2D)g;;(secondLine);BasicStroke bs=new BasicStroke(2f,,;(bs);;(muniteLine);bs=new BasicStroke(2f,,;(bs);;(hourLine);bs=new BasicStroke(4f,,;(bs);}public void actionPerformed(ActionEvent e){if()==secondTime){date=new Date();String s=();hour=(11, 13));munite=(14, 16));second=(17, 19));int h=hour%12;a=second;b=munite;c=h*5+munite/12;(width/2,height/2,(int)pointSX[a],(int)pointSY[a]);(width/2,height/2,(int)pointMX[b],(int)pointMY[b]);(width/2,height/2,(int)pointHX[c],(int)pointHY[c]);repaint();if ((munite==0)&&(second==0)){try{File f=new File("");URI uri=();URL url=();AudioClip aau;aau=(url);();}catch(MalformedURLException ex){();}}}}}21。