用Java实现日历记事本
java日历实验报告
java日历实验报告
Java日历实验报告
引言
在计算机科学领域中,日历是一种常见的应用程序。它不仅可以帮助我们追踪
时间和日期,还可以提供一些方便的功能,如提醒、日程安排等。在本次实验中,我们将使用Java编程语言来实现一个简单的日历应用程序,并对其进行测
试和评估。
实验目的
本次实验的主要目的是通过实现一个日历应用程序来加深对Java编程语言的理
解和掌握。通过这个实验,我们将学习如何使用Java的日期和时间类来处理日
期和时间相关的操作,并且能够将这些操作应用到实际的应用程序中。
实验步骤
1. 设计日历应用程序的功能和界面:在开始编写代码之前,我们首先需要确定
日历应用程序的功能和界面设计。我们可以考虑添加以下功能:显示当前日期、切换月份、添加日程安排等。在界面设计方面,我们可以使用图形用户界面(GUI)来提供更好的用户体验。
2. 实现日历应用程序的核心功能:在设计完成后,我们可以开始编写代码来实
现日历应用程序的核心功能。首先,我们需要使用Java的日期和时间类来获取
当前日期,并将其显示在界面上。然后,我们可以添加一些按钮或菜单来实现
切换月份的功能。最后,我们可以使用文本框或文本区域来让用户输入日程安排,并将其保存到文件或数据库中。
3. 进行测试和评估:在完成编码后,我们需要对日历应用程序进行测试和评估。
我们可以输入一些测试用例,如切换月份、添加日程安排等,来验证程序的正
确性和稳定性。如果发现了问题或错误,我们需要进行调试和修复,直到程序
能够正常运行。
实验结果
经过测试和评估,我们的日历应用程序能够正常运行,并且具备基本的功能。
java课程设计报告记事本
Java课程设计报告:记事本
1. 引言
记事本是一款常见的文本编辑工具,广泛应用于日常工作和学习中。本文将介绍一种基于Java语言开发的简易记事本设计方案。
2. 设计思路
2.1 界面设计
记事本的界面应简洁明了,方便用户进行文本编辑和操作。可以考虑使用Swing或JavaFX等图形库来创建用户界面。
2.1.1 主窗体
记事本的主窗体应包含一个菜单栏和一个文本编辑区域。菜单栏包含文件、编辑、格式等功能项,可以使用Java提供的菜单组件来实现。
2.1.2 文件操作
在菜单栏的文件功能项中,应包含新建、打开、保存、另存为等操作。这些功能可以通过文件选择对话框来实现。
2.1.3 文本编辑
文本编辑区域应支持基本的编辑功能,如复制、粘贴、剪切和撤销等操作。可以使用Java提供的文本框组件来实现。
2.2 功能设计
记事本的功能设计应满足用户的基本需求,如文本编辑、保存和打开文件等。
2.2.1 文本编辑功能
用户可以在文本编辑区域输入和编辑文本内容。可以提供字体、颜色和对齐等格式设置功能。
2.2.2 文件操作功能
用户可以通过菜单栏的文件功能项进行文件的新建、打开、保存和另存为等操作。可以使用Java的文件IO功能来实现。
2.3 实现步骤
2.3.1 创建主窗体
首先,需要创建一个主窗体,并设置合适的大小和布局。可以使用Swing或JavaFX提供的窗体组件来实现。
2.3.2 添加菜单栏
在主窗体中添加一个菜单栏,并设置合适的菜单和菜单项。可以使用Java提供的菜单和菜单项组件来实现。
2.3.3 添加文件操作功能
在菜单栏的文件功能项中添加新建、打开、保存和另存为等功能,并实现相应的事件处理。可以使用Java提供的文件选择对话框和文件IO功能来实现。
java课程设计(日记本)
1 需求分析
日记本是很平常的东西,很多人都有记日记的习惯,有人记账,有人记事、有人记下心情。随着计算机技术的发展,很多家庭都买了电脑,开始上网,开始使用电脑来办公、打字等。所写现在也有很多的人在使用电脑写小说,写博客等,受此启发我就萌生了编写一个日记本,用电脑来写日记的想法。
很多事我们不想忘记,于是写进日记本里,多年后翻出来再看看,很是惬意。大多数人都使用的是纸质的日记本,这中日记很难保存,容易丢失,也容易遭到水浸等物理破坏,这样我们的日记就丢了。同纸质的日记本相比较,用软件日记本不仅环保,而且安全方便,不怕被别人偷看。软件日记本可以很方便的携带只要存在电脑硬盘或者U盘中就可以了。1.1用户分析
这个软件面向的用户是拥有个人电脑,而其具有写日记的习惯的人。用户使用的软件必须简单容易使用,在此基础上尽可能多的提供人性化功能,丰富软件的内涵。同时软件必须尽量保证不会因用户的不当操作而使用户受到严重的经济、财产、精神损失。软件必须具有很强的可靠性,不会无故终止运行、死机、退出等。
1.1.1用户要求具备以下基本功能:
a 编辑日记:包括改变字体大小、改变字体颜色等。
b 管理日记:包括保存及删除日记、按日期分组日记等。
1.1.2除以上功能外,可另曾特色功能:
a 音乐播放的功能。
b 编辑背景变换的功能。
c 身份验证的功能。
d 日记文件加密存储的功能。
1.2软件界面与接口需求
1.2.1界面需求
界面的原则要求:方便、简洁、美观、一致等。整个界面要保持友好、简易的风格。
a输入设备:键盘、鼠标。
b输出设备:显示器。
我用java编写的记事本代码,分享给大家
import java.awt.*;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.*;import java.io.IOException;import javax.swing.*;import javax.swing.event.UndoableEditListener;@SuppressWarnings("serial")public class NoteBook extends JFrame{JPanel contentPane;Font a=new Font("TimeRoman",Font.PLAIN,16);//设置字体JMenuBar notepad=new JMenuBar();JMenu File=new JMenu("文件"); JMenu Edit=new JMenu("编辑");JMenu format=new JMenu("格式");JMenu backcolor=new JMenu("背景色");//分级菜单 JMenu Help=new JMenu("帮助");JMenuItem newfile=new JMenuItem("新建");JMenuItem openfile=new JMenuItem("打开");JMenuItem savefile=new JMenuItem("保存");JMenuItem exit=new JMenuItem("退出");JMenuItem clear=new JMenuItem("清空");JMenuItem paste=new JMenuItem("粘贴");JMenuItem copy=new JMenuItem("复制");JMenuItem cut=new JMenuItem("剪切");JMenuItem all=new JMenuItem("全选");JMenuItem about=new JMenuItem("关于");JMenuItem red=new JMenuItem("红色");//","橙","黄","","青","蓝","紫","黑","灰","白","粉红"JMenuItem green=new JMenuItem("绿色");JMenuItem yellow=new JMenuItem("黄色");JMenuItem orange=new JMenuItem("橙色");JMenuItem cyan=new JMenuItem("青色");JMenuItem blue=new JMenuItem("蓝色");JMenuItem purpo=new JMenuItem("紫色");JMenuItem black=new JMenuItem("黑色");JMenuItem gray=new JMenuItem("灰色");JMenuItem white=new JMenuItem("白色");JMenuItem pink=new JMenuItem("粉红");JMenuItem morecolor=new JMenuItem("更多颜色");JScrollPane scrollpane;public JTextArea textarea;protected JFrame jnb;public NoteBook(){try{setDefaultCloseOperation(EXIT_ON_CLOSE);notebookInit();}catch(Exception e){e.printStackTrace();}}private void notebookInit() throws Exception{//设置字体File.setFont(a); File.setForeground(Color.blue);Edit.setFont(a); Edit.setForeground(Color.blue);format.setFont(a); format.setForeground(Color.blue);Help.setFont(a); Help.setForeground(Color.blue);backcolor.setFont(a); backcolor.setForeground(Color.MAGENTA);newfile.setFont(a); newfile.setForeground(Color.MAGENTA);openfile.setFont(a); openfile.setForeground(Color.MAGENTA);savefile.setFont(a); savefile.setForeground(Color.MAGENTA);exit.setFont(a); exit.setForeground(Color.MAGENTA);clear.setFont(a); clear.setForeground(Color.MAGENTA);paste.setFont(a); paste.setForeground(Color.MAGENTA);cut.setFont(a); cut.setForeground(Color.MAGENTA);all.setFont(a); all.setForeground(Color.MAGENTA);copy.setFont(a); copy.setForeground(Color.MAGENTA);about.setFont(a); about.setForeground(Color.MAGENTA);red.setFont(a); red.setForeground(Color.MAGENTA);orange.setFont(a); oran
java日历记事本小游戏当前时间代码
//1.Main.java//该文件为该系统的源文件,是一个欢迎界面,并且起到了进入日历记事本的功能。import java.awt.TextField;import java.io.*;import java.applet.*;import java.awt.*;import java.awt.event.*;import javax.swing.Timer;import java.awt.geom.*;import java.util.*;import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Calendar;import javax.swing.*;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;public class Main extends Frame implements ActionListener{ private static final long serialVersionUID = -1805873342285018876L;int a,b,c;WindowButton Game;Timer Time;CalendarPad 开始=null; MenuBar bar;Menu fileMenu1;MenuItem item1,item2,item3; Label la; public Main(){la=new Label("欢迎使用韩磊日历",Label.CENTER) ;la.setBackground(Color.green);la.setForeground(Color.red);la.setFont(new Font("欢迎使用韩磊日历",Font.BOLD,24));Frame win = new Frame(); item1=new MenuItem("日历记事本");bar=new MenuBar();fileMenu1=new Menu("菜单选项");item2=new MenuItem("小游戏");item3=new MenuItem("当前时间");fileMenu1.add(item1);fileMenu1.add(item2);fileMenu1.add(item3);bar.add(fileMenu1);win.setMenuBar(bar);win.add(la,BorderLayout.CENTER);win.setVisible(true);win.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);}});win.setSize(246,280);item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);win.validate();Calendar calendar=Calendar.getInstance(); a=calendar.get(Calendar.YEAR); b=calendar.get(Calendar.MONTH)+1; c=calendar.get(Calendar.DAY_OF_MONTH); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){if(e.getSource()==item1){ 开始=new CalendarPad (a,b,c );开始.setVisible( true );}if(e.getSource()==item2){Game=new WindowButton("小游戏");Ga
JAVA日历记事本课程设计报告
Java日历记事本课程设计报告
在设计日历记事本时,需要编写6个JA V A源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java
效果图如下
. CalendarWindow类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
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;
JAVA课程设计报告-日历记事本
东华理工大学信息工程学院《JAVA技术应用开发》
课程设计报告
日历记事本
******
学号:************
同组成员:无
完成日期:2015.7.3
目录
1.项目概述 (2)
2.需求分析 (2)
3.概要设计 (3)
3.1功能结构 (3)
3.2布局 (3)
4.详细设计及功能实现 (4)
4.1结构 (4)
4.2主界面 (5)
4.3日历模块 (8)
4.4记事本模块 (9)
4.5记事列表模块 (12)
4.6提醒功能 (13)
5.运行测试 (15)
6.总结 (19)
1.项目概述
日历记事本是将日历和记事本结合在一起,用户可以任意选择某一天,保存这一天需要记录的记事,或者任意查看某一天已经记录的记事。同时还应具备提醒功能,当到达提醒时间时会自动弹出提醒。
2.需求分析
日历记事本大致分为日历和记事两个部分。
①日历部分
首先,需要选择日期,用户可以通过点击按钮选择前一年或后一年,同样也可以选择前一个月或后一个月,当月份为1月时,用户点击前一个月,会自动跳转到前一年的12月,同理,在12月时点击后一个月,会自动跳转到下一年的1月。另外,当选择跨度比较大时,需要多次点击按钮,很不方便,所以需要一个下拉框,可以直接选择某一年或某一个月。
当用户改变选择日期时,日历会自动显示出这一个月的日历,并且可以通过点击某一天,来进行添加记事的操作,鼠标经过日历或点击日历时,会有不同的效果以提示用户这是可以点击的。
②记事部分
首先,需要一个文本域给用户编辑记事内容,记事和日历部分所选择的日期是相关的,当用户点击日历选择某一天,则记事本上端会显示出选择的日期信息。同时,记事应该还具有设置提醒的功能,用户点击设置提醒按钮后,会弹出一个新的对话框,用来选择提醒时间。为保存记事,应将记事以文件的形式存储在计算机上。
日历记事本程序代码
运行界面:
// CalendarWindow类
package others;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.awt.SplashScreen;
public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener {
Calendar calendar;
int year,month,day;
CalendarMessage calendarMessage;
CalendarPad calendarPad;
NotePad notePad;
JTextField showYear,showMonth;
JTextField showDay[];
CalendarImage calendarImage;
String picturename;//图像名称;
String getPicture_address;
Alarm alarm;
JButton nextYear,previousYear,nextMonth,previousMonth;
JButton saveDailyRecord,deleteDailyRecord,readDailyRecord,changeBackground;
File dir;
Java日历记事本课程设计报告
Java日历记事本课程设计报告
在设计日历记事本时,需要编写6个JAVA源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java
效果图如下
. CalendarWindow类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
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;
简单日历(加记事本)
两个实体类分别为Note和Month
Note实体类如下:
package com.wangjing.calendar.pojo;
public class Note {
private int num ;
private int year;
private int month;
private int day;
private String diary;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public String getDiary() {
return diary;
}
public void setDiary(String diary) {
this.diary = diary;
}
}
Month类如下:
package com.wangjing.calendar.pojo;
public class Month {
如何用Java制作一个简易日历
如何⽤Java制作⼀个简易⽇历
简易⽇历制作
记录⼀下Java实现的⼀个⽇历⼩程序,效果图如下:
实现以上的效果,我们需要⽤到两个类:SimpleDateFormat和Calendar。
⾸先看看这两个类的⽤法:
类 SimpleDateFormat
SimpleDateFormat是⼀个以与语⾔环境有关的⽅式来格式化和解析⽇期的具体类。它允许进⾏格式化(⽇期(Date) -> ⽂本(String))、解析(⽂本(String) -> ⽇期(Date))和规范化。
具体要⽤到的⽅法
( pattern) ⽤给定的模式和默认语⾔环境的⽇期格式符号构造 SimpleDateFormat。
( source) 从给定字符串的开始解析⽂本以⽣成⽇期。
这⾥我们使⽤SimpleDateFormat⽣成⼀个格式为“yyyy-MM”的实例,并通过parse⽅法将我们输⼊的字符串转换成⽇期(Date)对象。具体实现如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); //⽣成格式化实例
System.out.print("请输⼊要查询的⽉份(yyyy-MM):");
String str = scanner.next(); //获取输⼊字符串
Date date = null; //要获取的Date对象变量
try {
date = sdf.parse(str); //将字符串转成⽇期对象,这⾥会抛出格式转换异常,需要⽤try..catch进⾏处理
} catch (Exception e) {
日历记事本-JAVA课程设计
该类创建动态日历记事本的主窗口,该类含有main方法,是程序的入口
程序,CalenderWindow类的成员变量中有5种重要类型的对象,CalendarPad、NotePad、Calendarlmage、Clock、CalendarMessage 对象。
2.2.2Cale nderMessage.java
该类用来刻画和“日期”有关的数据。
2.2.3Cale nderPad.java
该类是JPanel类的子类,所创建的对象是CalendarWindow类的重要成员之一,用来表示”日历”,即负责显示和修改Cale ndarMessage对象中的日期数据。
2.2.4Notepad.java
该类是JPanel的一个子类,创建的对象表示“记事本”,提供编辑读取和保存阐述日志的功能。
2.2.5Cale ndarlmage.java
该类所创建的对象是CalendarWindow类的成员之一,负责绘制图像。
2.2.6Clock.java
该类创建的对象是CalendarWindow类的成员之一,负责显示时钟。
日历记事本用到的一些重要的类以及之间的关系如图1所示。
图1类之间的组合关系图 2.3功能模块
此设计共有以下几个功能模块。
2.3.1年份改变
选择日期
保存并标记有”显示日志删除并去掉有
图2流程图
2.5类、方法、属性说明
2.5.1CalendarWindow 类
(1)成员变量
•year,mo nth和day是int型数据,它们的值分别确定年份、月份和日期。
-calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。-calendarPad是CalendarPad对象,该对象可以显示和日期有关的数据。
基于Java的日历记事本..
摘要
Java是Sun公司推出的一种基于面向对象技术的编程语言,同时也是一种跨平台的程序设计语言,是软件开发的一种革命性技术,已被列为当今世界信息技术的主流之一,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。Java 有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。用JAVA 语言进行程序开发,目前十分流行。本设计通过 JAVA 来实现具有图形界面的日历记事本,体现了 JAVA 的高效性等特点。
随着社会的发展,越来越多的人依靠电子产品生活,而他们的日常工作也是离不开这些电子产品的,所以开发出一款日历备忘录就显得必不可少了。利用面向对象的程序设计语言Java来实现具有图形界面的日历记事本。日历具有基本的浏览和日期修改的功能。记事本具有输入、保存、删除、查看等基本功能。
关键词:面向对象Java 日历记事本
I
目录
摘要 ................................................................................................................................... I 目录 ................................................................................................................................ I I 第1章绪论 .. (3)
Java开发日历记事本
l概 述
日历 记 事 本 的包 括 日历 和 日志 记 事 本 两部 分 :
日历 部 分 采用 公 历 历 法 , 面设 计 : 界 日期部 分 每 行 7天 , 列 5天 , 每 可完 伞记 录 一 个 月 中 的 所 有 天 数 。 星 期 采 用 中 文 显示 , 行 每
的 第 一 天 为 星 期 日。星 期 六 显 示 为 蓝 色 , 期 日显 示 为 红 色 , 星 当前 日期 显示 为绿 色 , 它 日期 显 示 为 黑 色 。年 份 通 过 负 数 表 示 公 元 其
Ac iv v lp e to ln a n tp d i a a h e eDe eo m n fCae d ra d No e a J v n
S —m e U La i
( a n Unv r t o eh oo y T i a 3 6 0 Ch a T i a iesy f c n lg , a u n0 0 0 , i ) y u i T y n A s a t A he ed v o me t f a n a a d n t a rga wi a hcl ne a e nJv f be t o e tdp o a mig l — b t c: c i e d p n e dr n oe d p o rm t g p i tr c i aao jc— r ne rg m n n r v o c l p hr ai f o —i r a
日历记事本Java程序设计
徐州工程学院数理学院
java课程设计说明书
课程名称日历记事本Java程序设计课程代码
题目日历记事本
年级/专业/班
学生姓名
学号
指导老师王逢州
开题时间
完成时间
课程设计任务书
课程名称Java程序设计
学生姓名
1、设计的目的与要求;
1、)为用户提供一个带有日程提醒功能的日历记事本并具备以下功能:
(1)、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
(2)、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。
(3)、查询信息:用户可以查询到某个月的所有的提示信息。
2、)对java技术的进一步了解和简单的运用;
3、)初步的接触软件工程;
设计进度及完成情况
日期内容
5月25日分析课题;对题目进行初步分析
5月26日建立模型,完成整体设计以及功能模块分析
5月27日确立每个类的功能,完成对算法的分析
5月28日完成CalendarPad类的设计
5月28日完成对Year类的设计
5月28日完成对Month类的设计
5月28日完成对NotePad类的设计
5月29日紧系程序测试与修改
5月29日完成设计,整理说明书
5月29日打包发布程序
目录
摘要.................................................................................................................................. - 4 -
1. 引言..................................................................................................................................... - 5 -
java日历小程序
java日历小程序
Java是一种广泛使用的编程语言,具有跨平台性和易于学习的特点。在这篇文章中,我将介绍一个使用Java编写的日历小程序,该程序可以匡助用户查看任意年份和月份的日历。
1. 程序概述
这个日历小程序的主要功能是根据用户输入的年份和月份,生成对应月份的日历。用户可以通过命令行输入所需的年份和月份,程序将输出一个按照星期罗列的日历表格。
2. 实现思路
为了实现这个日历小程序,我们需要使用Java提供的日期和时间相关的类。Java提供了一个Calendar类,可以用于处理日期和时间。我们可以使用Calendar 类中的方法来获取当前日期,以及计算指定日期的星期等信息。
程序的主要逻辑如下:
- 获取用户输入的年份和月份。
- 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天。
- 获取该月的天数,并计算该月的第一天是星期几。
- 输出日历表格,按照星期罗列。
3. 代码实现
下面是一个简单的Java代码示例,用于实现上述日历小程序的功能:
```java
import java.util.Calendar;
public class CalendarProgram {
public static void main(String[] args) {
// 获取用户输入的年份和月份
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
// 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天
- 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);