Java日历记事本课程设计报告.docx
- 文档编号:28301909
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:36
- 大小:24.91KB
Java日历记事本课程设计报告.docx
《Java日历记事本课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java日历记事本课程设计报告.docx(36页珍藏版)》请在冰豆网上搜索。
Java日历记事本课程设计报告
Java日历记事本课程设计报告
在设计日历记事本时,需要编写6个JAVA源文件:
CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java
效果图如下
.CalendarWindow类
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.io.*;
publicclassCalendarWindowextendsJFrameimplementsActionListener,MouseListener,FocusListener{
intyear,month,day;
CalendarMessagecalendarMessage;
CalendarPadcalendarPad;
NotePadnotePad;
JTextFieldshowYear,showMonth;
JTextField[]showDay;
CalendarImagecalendarImage;
Stringpicturename;
Clockclock;
JButtonnextYear,previousYear,nextMonth,previousMonth;
JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;
JButtongetPicture;
Filedir;
ColorbackColor=Color.white;
publicCalendarWindow(){
dir=newFile("./dailyRecord");
dir.mkdir();
showDay=newJTextField[42];
for(inti=0;i showDay[i]=newJTextField(); showDay[i].setBackground(backColor); showDay[i].setLayout(newGridLayout(3,3)); showDay[i].addMouseListener(this); showDay[i].addFocusListener(this); } calendarMessage=newCalendarMessage(); calendarPad=newCalendarPad(); notePad=newNotePad(); Calendarcalendar=Calendar.getInstance(); calendar.setTime(newDate()); year=calendar.get(Calendar.YEAR); month=calendar.get(Calendar.MONTH)+1; day=calendar.get(Calendar.DAY_OF_MONTH); calendarMessage.setYear(year); calendarMessage.setMonth(month); calendarMessage.setDay(day); calendarPad.setCalendarMessage(calendarMessage); calendarPad.setShowDayTextField(showDay); notePad.setShowMessage(year,month,day); calendarPad.showMonthCalendar(); doMark(); calendarImage=newCalendarImage(); calendarImage.setImageFile(newFile("flower.jpg")); clock=newClock(); JSplitPanesplitV1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage); JSplitPanesplitV2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock); JSplitPanesplitH=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2); add(splitH,BorderLayout.CENTER); showYear=newJTextField(""+year,6); showYear.setFont(newFont("TimesRoman",Font.BOLD,12)); showYear.setHorizontalAlignment(JTextField.CENTER); showMonth=newJTextField(""+month,4); showMonth.setFont(newFont("TimesRoman",Font.BOLD,12)); showMonth.setHorizontalAlignment(JTextField.CENTER); nextYear=newJButton("下年"); previousYear=newJButton("上年"); nextMonth=newJButton("下月"); previousMonth=newJButton("上月"); nextYear.addActionListener(this); previousYear.addActionListener(this); nextMonth.addActionListener(this); previousMonth.addActionListener(this); JPanelnorth=newJPanel(); north.add(previousYear); north.add(showYear); north.add(nextYear); north.add(previousMonth); north.add(showMonth); north.add(nextMonth); add(north,BorderLayout.NORTH); saveDailyRecord=newJButton("保存日志"); deleteDailyRecord=newJButton("删除日志"); readDailyRecord=newJButton("读取日志"); saveDailyRecord.addActionListener(this); deleteDailyRecord.addActionListener(this); readDailyRecord.addActionListener(this); JPanelpSouth=newJPanel(); pSouth.add(saveDailyRecord); pSouth.add(deleteDailyRecord); pSouth.add(readDailyRecord); add(pSouth,BorderLayout.SOUTH); getPicture=newJButton("选择日历图像"); getPicture.addActionListener(this); pSouth.add(getPicture); add(pSouth,BorderLayout.SOUTH); setVisible(true); setBounds(60,60,660,480); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==nextYear){ year++; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==previousYear){ year--; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==nextMonth){ month++; if(month<1)month=12; showMonth.setText(""+month); calendarMessage.setMonth(month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==previousMonth){ month--; if(month<1)month=12; showMonth.setText(""+month); calendarMessage.setMonth(month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==showYear){ Strings=showYear.getText().trim(); chara[]=s.toCharArray(); booleanboo=false; for(inti=0;i if(! (Character.isDigit(a[i]))) boo=true; if(boo==true) JOptionPane.showMessageDialog(this,"您输入了非法年份","警告",JOptionPane.WARNING_MESSAGE); elseif(boo==false) year=Integer.parseInt(s); showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==saveDailyRecord){ notePad.save(dir,year,month,day); doMark(); } elseif(e.getSource()==deleteDailyRecord){ notePad.delete(dir,year,month,day); doMark(); } elseif(e.getSource()==readDailyRecord){ notePad.read(dir,year,month,day); } elseif(e.getSource()==getPicture){ FileDialogfd=newFileDialog(this,"打开文件对话框"); fd.setVisible(true); Stringfileopen=null,filename=null; fileopen=fd.getDirectory(); filename=fd.getFile(); calendarImage.setImageFile(newFile(fileopen,filename)); } } publicvoidmousePressed(MouseEvente){ JTextFieldtext=(JTextField)e.getSource(); Stringstr=text.getText().trim(); try{day=Integer.parseInt(str); } catch(NumberFormatExceptionexp){ } calendarMessage.setDay(day); notePad.setShowMessage(year,month,day); } publicvoidmouseReleased(MouseEvente){} publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} publicvoidmouseClicked(MouseEvente){} publicvoidfocusGained(FocusEvente){ Componentcom=(Component)e.getSource(); com.setBackground(Color.pink); } publicvoidfocusLost(FocusEvente){ Componentcom=(Component)e.getSource(); com.setBackground(backColor); } publicvoiddoMark(){ for(inti=0;i showDay[i].removeAll(); Stringstr=showDay[i].getText().trim(); try{ intn=Integer.parseInt(str); if(isHaveDailyRecord(n)==true){ JLabelmess=newJLabel("有"); mess.setFont(newFont("TimesRoman",Font.PLAIN,11)); mess.setForeground(Color.blue); showDay[i].add(mess); } } catch(Exceptionexp){} } calendarPad.repaint(); calendarPad.validate(); } publicbooleanisHaveDailyRecord(intn){ Stringkey=""+year+""+month+""+n; String[]dayFile=dir.list(); booleanboo=false; for(intk=0;k if(dayFile[k].equals(key+".txt")){ boo=true; break; } } returnboo; } publicStringgetPicture_address(){ Stringaddress=null; try{ InputStreamoutOne=newFileInputStream("picture_address.txt"); ObjectInputStreamoutTwo=newObjectInputStream(outOne); try{ address=(String)outTwo.readObject(); }catch(Exceptionex){ } outTwo.close(); }catch(IOExceptioneee){ } if(address! =null){ returnaddress; }else{ return"picture.jpg"; } } publicvoidactionPerformed1(ActionEvente){ if(e.getActionCommand().equals("更改图片背景")){ FileDialogdia=newFileDialog(this,"选择图片",FileDialog.LOAD); dia.setModal(true); dia.setVisible(true); if((dia.getDirectory()! =null)&&(dia.getFile()! =null)){ try{ FileOutputStreaminOne=newFileOutputStream( "picture_address.txt"); ObjectOutputStreaminTwo=newObjectOutputStream(inOne); inTwo.writeObject(dia.getDirectory()+dia.getFile()); inTwo.close(); }catch(IOExceptionee){ } Stringpicturename=getPicture_address(); calendarImage.setImageFile(newFile(picturename)); } } } publicstaticvoidmain(Stringargs[]){ newCalendarWindow(); } } CalendarPad类 importjavax.swing.*; importjava.awt.*; importjava.awt.event.*; importjava.util.*; importjavax.swing.JPanel; publicclassCalendarPadextendsJPanel{ intyear,month,day; CalendarMessagecalendarMessage; JTextField[]showDay; JLabeltitle[]; String[]星期={"SUN日","MON一","TUE二","WED三","THU四","FRI四","SAT六"}; JPanelnorth,center; publicCalendarPad(){ setLayout(newBorderLayout()); north=newJPanel(); north.setLayout(newGridLayout(1,7)); center=newJPanel(); center.setLayout(newGridLayout(6,7)); add(center,BorderLayout.CENTER); add(north,BorderLayout.NORTH); title=newJLabel[7]; for(intj=0;j<7;j++){ title[j]=newJLabel(); title[j].setFont(newFont("TimesRoman",Font.BOLD,12)); title[j].setText(星期[j]); title[j].setHorizontalAlignment(JLabel.CENTER); title[j].setBorder(BorderFactory.createRaisedBevelBorder()); north.add(title[j]); } title[0].setForeground(Color.red); title[6].setForeground(Color.blue); } publicvoidsetShowDayTextField(JTextField[]text){ showDay=text; for(inti=0;i showDay[i].setFont(newFont("TimesRoman",Font.BOLD,15)); showD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 日历 记事本 课程设计 报告