用Java实现日历记事本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用Java实现日历记事本
信息与计算科学专业课程设计
用Java实现日历记事本
3. 实验内容
编程实现日历记事本。具体要求如下:
(1)该日历可以通过在文本框中输入年份和月份设置日期,也可按年前后翻动,用鼠标左键单击“上年”和“下年”按钮,将当前日历的年份减一和加一。还可以在某年内按月前后翻动,用鼠标左键单击“上月”和“下月”按钮,将日历的月份减一和加一。
(2)左键单击日历上的日期,可以通过右侧的记事本(文本区)编辑有关日志,并将日志保存到一个文件,该文件的名字是由当前日期组成的字符序列。用户可以读取、删除某个日期的日志,也可以继续向某个日志添加新的内容。在保存、删除和读取日志时都会先弹出一个确认对话框,以确认保存、删除和读取操作。
(3)当某个日期有日志时,该日期以粗体16号字显示,表明这个日期有日志;当用户删除某个日期的日志后,该日期恢复原来的外观。
实现效果图(参考)如下:
提示:(1)组件调用public void setFont(Font f)方法可以设置组件上的字体,Font类的构造方法为:public Font(String name,int style,int size),其中name 是字体的名字,style决定字体的样式(如Font.BOLD 表示粗体)size决定字体的大小。(具体请参考JDK API)
(2)当左键单击日历上的日期时,如要获取该日期,可通过处理该组件上的鼠标事件来实现。
4.实验步骤、实施过程、关键代码、实验结果及分析说明等
1.CalendarPad类
(1) 进行整体布局,建立日历记事本文件,设置日历卡,把日期按星期顺序排列,并用窗口监视器实现。
(2)用窗口监视器实现,结果如下:
2.Notepad类
(1)对日期的设置和获取,设置信息条,对文本框进行设置,保存日志、删除日志和读取日志按钮的事件实现。
(2)保存日志按钮事件实现如下:
(3)读取日志按钮事件实现如下:
(4.)删除日志按钮事件实现如下:
3Year类
(1)输入年份可以实现输出,给上下年按钮设置监视器,对上下年按钮事件的实现。
(2)其结果如下:
4. Month类
(1)设置上下月监视器,对上下月按钮的事件实现,区分闰年和平年,对天数不同的月份进行分类。(2)其结果如下:
(续上页,可加页)
5各个类的源代码如下:
CalendarPad 类:
//CalendarPad.java
import java.util.Calendar;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
public class CalendarPad extends JFrame implements MouseListener,ActionListener {
int year,month,day;
Hashtable hashtable;
JButton Save,Delete,Read;
File file;
JTextField showDay[];
JLabel title[];
Calendar Date;
int Weekday;
NotePad notepad=null;
Month ChangeMonth;
Year ChangeYear ;
String week[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JPanel leftPanel,rightPanel;
public CalendarPad(int year,int month,int day) {
leftPanel=new JPanel();
JPanel leftCenter=new JPanel();
JPanel leftNorth=new JPanel();
leftCenter.setLayout(new GridLayout(7,7));
rightPanel=new JPanel();
this.year=year;
this.month=month;
this.day=day;
ChangeYear=new Year(this);
ChangeYear.setYear(year);
ChangeMonth=new Month(this);
ChangeMonth.setMonth(month);
title=new JLabel[7];
showDay=new JTextField[42];
for(int j=0;j<7;j++) {
title[j]=new JLabel();
title[j].setText(week[j]);
title[j].setBorder(BorderFactory.createRaisedBevelBorder()); title[j].setForeground(Color.blue);
leftCenter.add(title[j]);
}
for(int i=0;i<42;i++) {
showDay[i]=new JTextField();
showDay[i].addMouseListener(this);
showDay[i].setEditable(false);
leftCenter.add(showDay[i]);
}
Save=new JButton("保存日志") ;
Delete=new JButton("删除日志") ;
Read=new JButton("读取日志") ;
Read.addActionListener(this);
Save.addActionListener(this);
Delete.addActionListener(this); //设置监视器
JPanel pSouth=new JPanel();
pSouth.add(Save);
pSouth.add(Delete);
pSouth.add(Read);
Date=Calendar.getInstance();
Box box=Box.createHorizontalBox();
box.add(ChangeYear);
box.add(ChangeMonth);
leftNorth.add(box);
leftPanel.setLayout(new BorderLayout());
add(leftNorth,BorderLayout.NORTH);
leftPanel.add(leftCenter,BorderLayout.CENTER);
add(pSouth,BorderLayout.SOUTH);
leftPanel.validate();
notepad=new NotePad(this); rightPanel.add(notepad);
Container con=getContentPane();
JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
leftPanel,rightPanel);