用Java实现日历记事本_第1页
用Java实现日历记事本_第2页
用Java实现日历记事本_第3页
用Java实现日历记事本_第4页
用Java实现日历记事本_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用Java实现日历记事本实验目的掌握RandomAccessFile类的使用;掌握字符输入、输出流缓和冲输入、输出流的使用。实验要求实验前,应预先熟习有关知识点,拟出相应的实验操作步骤,明的确验目的和要求;实验过程中,听从实验指导教师安排,恪守实验室的各项规章制度,爱惜实验仪器设施;实验操作达成后,仔细书写实验报告,总结实验经验,剖析实验过程中出现的问题。实验内容编程实现日历记事本。详细要求以下:1)该日历能够经过在文本框中输入年份和月份设置日期,也可按年前后翻动,用鼠标左键单击“上年”和“下年”按钮,将目前日历的年份减一和加一。还能够在某年内按月前后翻动,用鼠标左键单击“上月”和“下月”按钮

2、,将日历的月份减一和加一。2)左键单击日历上的日期,能够经过右边的记事本(文本区)编写有关日记,并将日记保留到一个文件,该文件的名字是由目前日期构成的字符序列。用户能够读取、删除某个日期的日记,也能够持续向某个日记增添新的内容。在保留、删除和读取日记时都会先弹出一个确认对话框,以确认保留、删除和读取操作。3)当某个日期有日记时,该日期以粗体16号字显示,表示这个日期有日记;当用户删除某个日期的日记后,该日期恢还本来的外观。实现成效图(参照)以下:提示:(1)组件调用publicvoidsetFont(Fontf)方法能够设置组件上的字体,Font法为:publicFont(Stringname

3、,intstyle,intsize),此中name是字体的名字,字体的款式(如Font.BOLD表示粗体)size决定字体的大小。(详细请参照JDKAPI)(2)当左键单击日历上的日期时,如要获得该日期,可经过办理该组件上的鼠标事件来实现。类的结构方style决定4实验步骤、实行过程、重点代码、实验结果及剖析说明等1.CalendarPad类1)进行整体布局,成立日历记事本文件,设置日历卡,把日期按礼拜次序摆列,并用窗口监督器实现。2)用窗口监督器实现,结果以下:2.Notepad类(1)对日期的设置和获得,设置信息条,对文本框进行设置,保留日记、删除日记和读取日记按钮的事件实现。(2)保留日

4、记按钮事件实现以下:3)读取日记按钮事件实现以下:4.)删除日记按钮事件实现以下:Year类1)输入年份能够实现输出,给上下年按钮设置监督器,对上下年按钮事件的实现。(2)其结果以下:4.Month类1)设置上下月监督器,对上下月按钮的事件实现,划分闰年和平年,对天数不一样的月份进行分类。2)其结果以下:(续上页,可加页)各个类的源代码以下:CalendarPad类:/CalendarPad.javaimportjava.util.Calendar;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io

5、.*;importjava.util.Hashtable;publicclassCalendarPadextendsJFrameimplementsMouseListener,ActionListenerintyear,month,day;Hashtablehashtable;JButtonSave,Delete,Read;Filefile;JTextFieldshowDay;JLabeltitle;CalendarDate;intWeekday;NotePadnotepad=null;MonthChangeMonth;YearChangeYear;Stringweek=礼拜日,礼拜一,礼拜二

6、,礼拜三,礼拜四,礼拜五,礼拜六;JPanelleftPanel,rightPanel;publicCalendarPad(intyear,intmonth,intday)leftPanel=newJPanel();JPanelleftCenter=newJPanel();JPanelleftNorth=newJPanel();leftCenter.setLayout(newGridLayout(7,7);rightPanel=newJPanel();this.year=year;this.month=month;this.day=day;ChangeYear=newYear(this);Ch

7、angeYear.setYear(year);ChangeMonth=newMonth(this);ChangeMonth.setMonth(month);title=newJLabel7;showDay=newJTextField42;for(intj=0;j7;j+)titlej=newJLabel();titlej.setText(weekj);titlej.setBorder(BorderFactory.createRaisedBevelBorder();titlej.setForeground(Color.blue);leftCenter.add(titlej);for(inti=0

8、;i42;i+)showDayi=newJTextField();showDayi.addMouseListener(this);showDayi.setEditable(false);leftCenter.add(showDayi);Save=newJButton(保留日记);Delete=newJButton(删除日记);Read=newJButton(读取日记);Read.addActionListener(this);Save.addActionListener(this);Delete.addActionListener(this);/设置监督器JPanelpSouth=newJPa

9、nel();pSouth.add(Save);pSouth.add(Delete);pSouth.add(Read);Date=Calendar.getInstance();Boxbox=Box.createHorizontalBox();box.add(ChangeYear);box.add(ChangeMonth);leftNorth.add(box);leftPanel.setLayout(newBorderLayout();add(leftNorth,BorderLayout.NORTH);leftPanel.add(leftCenter,BorderLayout.CENTER);ad

10、d(pSouth,BorderLayout.SOUTH);leftPanel.validate();notepad=newNotePad(this);rightPanel.add(notepad);Containercon=getContentPane();JSplitPanesplit=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel);con.add(split,BorderLayout.CENTER);/进行整体布局con.validate();hashtable=newHashtable();file=newF

11、ile(日历记事本.txt);if(!file.exists()tryFileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(hashtable);objectOut.close();out.close();catch(IOExceptione)setCalendar(year,month);addWindowListener(newWindowAdapter()/设置窗口监督器publicvoidwind

12、owClosing(WindowEvente)System.exit(0););setVisible(true);setBounds(100,60,524,335);validate();publicvoidactionPerformed(ActionEvente)if(e.getSource()=Save)notepad.Save(file,year,month,day);elseif(e.getSource()=Delete)notepad.Delete(file,year,month,day);elseif(e.getSource()=Read)notepad.Read(file,yea

13、r,month,day);publicvoidsetCalendar(intyear,intmonth)/Date.set(year,month-1,1);设置日历卡Weekday=Date.get(Calendar.DAY_OF_WEEK)-1;if(month=1|month=2|month=3|month=5|month=7|month=8|month=10|month=12)Arrange(Weekday,31);elseif(month=4|month=6|month=9|month=11)Arrange(Weekday,30);elseif(month=2)if(year%4=0&

14、year%100!=0)|(year%400=0)Arrange(Weekday,29);elseArrange(Weekday,28);publicvoidArrange(intWeekday,intMonthday)/for(inti=Weekday,n=1;iWeekday+Monthday;i+)showDayi.setText(+n);if(n=day)showDayi.setForeground(Color.blue);把日期,按礼拜摆列showDayi.setFont(newFont(TimesRoman,Font.BOLD,20);elseshowDayi.setFont(ne

15、wFont(TimesRoman,Font.BOLD,12);showDayi.setForeground(Color.black);n+;for(inti=0;iWeekday;i+)showDayi.setText();for(inti=Weekday+Monthday;i42;i+)showDayi.setText();publicintgetYear()returnyear;publicvoidsetYear(inty)year=y;notepad.setYear(year);publicintgetMonth()returnmonth;publicvoidsetMonth(intm)

16、month=m;notepad.setMonth(month);publicintgetDay()returnday;publicvoidsetDay(intd)day=d;notepad.setDay(day);publicHashtablegetHashtable()returnhashtable;publicFilegetFile()returnfile;publicvoidmousePressed(MouseEvente)JTextFieldsource=(JTextField)e.getSource();tryday=Integer.parseInt(source.getText()

17、;notepad.setDay(day);notepad.setNews(year,month,day);notepad.setText(null);catch(Exceptionee)publicvoidmouseClicked(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmouseEntered(MouseEvente)publicstaticvoidmain(Stringargs)Calendarcalendar=Calendar.getInstan

18、ce();inty=calendar.get(Calendar.YEAR);intm=calendar.get(Calendar.MONTH)+1;intd=calendar.get(Calendar.DAY_OF_MONTH);newCalendarPad(y,m,d);NotePad类NotePad.javaimportjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjavax.swing.event.*;importjava.io.*;publicclassNotePadexten

19、dsJPanelimplementsActionListenerJTextAreatext;Hashtabletable;JLabelNews;intyear,month,day;Filefile;CalendarPadcalendar;publicNotePad(CalendarPadcalendar)this.calendar=calendar;year=calendar.getYear();month=calendar.getMonth();day=calendar.getDay();table=calendar.getHashtable();file=calendar.getFile(

20、);News=newJLabel(+year+年+month+月+day+日,JLabel.CENTER);News.setFont(newFont(TimesRoman,Font.BOLD,20);text=newJTextArea(10,15);setLayout(newBorderLayout();JPanelpSouth=newJPanel();add(News,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);add(newJScrollPane(text),BorderLayout.CENTER);publicvoidsetYea

21、r(intyear)this.year=year;publicintgetYear()returnyear;publicvoidsetMonth(intmonth)this.month=month;publicintgetMonth()returnmonth;publicvoidsetDay(intday)this.day=day;publicintgetDay()returnday;publicvoidsetNews(intyear,intmonth,intday)News.setText(+year+年+month+月+day+日);publicvoidsetText(Strings)te

22、xt.setText(s);publicvoidactionPerformed(ActionEvente)publicvoidSave(Filefile,intyear,intmonth,intday)/保留日记按钮事件实现StringLogCenter=text.getText();Stringkey=+year+month+day;tryFileInputStreaminOne=newFileInputStream(file);ObjectInputStreaminTwo=newObjectInputStream(inOne);table=(Hashtable)inTwo.readObje

23、ct();inOne.close();inTwo.close();catch(Exceptionee)if(table.containsKey(key)Stringm=+year+年+month+月+day+已存在日记,能否更新?;/是更新已有的日记intok=JOptionPane.showConfirmDialog(this,m,咨询,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)tryFileInputStreaminOne=newFileInputStream(f

24、ile);ObjectInputStreaminTwo=newObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.remove(key);FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();te

25、xt.setText(null);catch(Exceptionee)Stringf=日记已更新;JOptionPane.showMessageDialog(this,f,JOptionPane.WARNING_MESSAGE);提示elseStringm=+year+年+month+月+day+还没有日记,能否保留日记?;/保留还没有的日记intok=JOptionPane.showConfirmDialog(this,m,询问,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTI

26、ON)tryFileInputStreaminOne=newFileInputStream(file);ObjectInputStreaminTwo=newObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.put(key,LogCenter);FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectO

27、ut.writeObject(table);objectOut.close();out.close();catch(Exceptionee)Stringf=日记保留成功;JOptionPane.showMessageDialog(this,f,提示,JOptionPane.WARNING_MESSAGE);publicvoidDelete(Filefile,intyear,intmonth,intday)/删除日记按钮事件实现Stringkey=+year+month+day;if(table.containsKey(key)Stringm=删除+year+年+month+月+day+日的日记

28、吗?;intyes=JOptionPane.showConfirmDialog(this,m,咨询,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(yes=JOptionPane.YES_OPTION)tryFileInputStreaminOne=newFileInputStream(file);ObjectInputStreaminTwo=newObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();

29、table.remove(key);FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();text.setText(null);catch(Exceptionee)Stringf=日记删除成功;JOptionPane.showMessageDialog(this,f,JOptionPane.WARNING_MESSAGE);提示el

30、seStringf=+year+年+month+月+day+无记录;JOptionPane.showMessageDialog(this,f,提示,JOptionPane.WARNING_MESSAGE);publicvoidRead(Filefile,intyear,intmonth,intday)/读取日记按钮事件实现Stringkey=+year+month+day;tryFileInputStreaminOne=newFileInputStream(file);ObjectInputStreaminTwo=newObjectInputStream(inOne);table=(Hasht

31、able)inTwo.readObject();inOne.close();inTwo.close();catch(Exceptionee)if(table.containsKey(key)Stringm=+year+年+month+月+day+已有日记,能否读取?;intok=JOptionPane.showConfirmDialog(this,m,咨询,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)text.setText(String)table.get(key);

32、text.setText(+year+年+month+月+day+日的日记);elsetext.setText();elseStringf=+year+年+month+月+day+日,暂无记录;JOptionPane.showMessageDialog(this,f,提示,JOptionPane.WARNING_MESSAGE);Year类/Year.java其源代码为:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassYearextendsBoximplementsActionListenerinty

33、ear;JTextFieldshowYear=null;JButtonYear1,Year2;CalendarPadCAL;publicYear(CalendarPadCAL)super(BoxLayout.X_AXIS);showYear=newJTextField(4);showYear.setFont(newFont(TimesRomn,Font.BOLD,14);this.CAL=CAL;year=CAL.getYear();Year2=newJButton(下年);Year1=newJButton(上年);add(Year1);add(showYear);add(Year2);sho

34、wYear.addActionListener(this);Year1.addActionListener(this);Year2.addActionListener(this);/设置监督器publicvoidsetYear(intyear)this.year=year;showYear.setText(+year);publicintgetYear()returnyear;publicvoidactionPerformed(ActionEvente)/if(e.getSource()=Year1)/上年按钮year=year-1;showYear.setText(+year);CAL.se

35、tYear(year);CAL.setCalendar(year,CAL.getMonth();上下年按钮事件的实现elseif(e.getSource()=Year2)/year=year+1;下年按钮showYear.setText(+year);CAL.setYear(year);CAL.setCalendar(year,CAL.getMonth();elseif(e.getSource()=showYear)/输入年份tryyear=Integer.parseInt(showYear.getText();showYear.setText(+year);CAL.setYear(year);CAL.setCalendar(year,CAL.getMonth();catch(NumberFormatExceptionee)showYear.setText(+year);CAL.setYear(year);CAL.setCalendar(year,CAL.getMonth();Mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论