用Java实现日历记事本

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档