日历记事本文档.doc
Java高级应用开发
GUI综合应用项目:日历记事本
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
一、实训目的
1、巩固JAVA程序设计的基本理论知识。
2、将理论知识和实践结合起来,将理论知识应用到实践中,编写应用程序。
3、通过实训,掌握基本的编程思想方法,具备一定的编程能力。 二、实训的基本要求
2.1 理论要求
,、熟悉JAVA基本语法及三种基本结构(顺序、选择、循环)。
,、熟悉JAVA面向对象程序设计思想。
,、熟悉JAVA的类抽象、封装、继承、多态的特性。
在此基础上,多查阅资料,独立思考完成程序代码,并写出详细的设计书。 2.2 设备要求
JDK1.5.0以上版本,JBuilder或Eclipse3.0。
三、实训内容
运用JAVA语言设计一个GUI 界面的日历记事本。系统将日历、记事本结合在一起,用户可以方便地在任何日期记载有关内容以及查看某个日期记载的内容。其内容为:
1、界面的左侧是日历。该日历可以按年前后翻动,当鼠标单击“上一年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。
2、也可以在某年内按月前后翻动。当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月”当前日历
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的月份将加一。
3、使用鼠标左键在要选择的日期上单击,如有记事内容,程序将弹出对话框提示该日有记事内容,提示用户是否用记事本显示该内容。
4、选择具体日期后,可以将记事本的内容保存起来,形成一个日志。
5、日历记事本共有4 个Java 源文件:MyCalendar.java,用来描述日期类;CalendarPad.Java ,负责创建日历记事本主窗口,该文件含有main方法,程序从该类开始执行;CalendarFrame.java,用来描述日历记事本窗体;
第 1 页 共 12 页
Java高级应用开发 NotePad.Java ,负责创建记事本(也可以不单独定义类,将其放在日历记事本窗体中定义)。
6、运行效果图
7、附加功能:在完成以上功能基础上为日历记事本增加农历显示、添加背景图片、增加重要事务提醒等功能。
四、实训步骤
前期准备:通过JDK1.6API中文版学习java.util.Calendar类,了解日历记事本项目的基本情况,分析其设计思路。
4.1 完成日历类MyCalendar的设计
1、完成加粗注释下代码的填写
import java.util.Calendar;
public class MyCalendar {
//定义年year
//定义月份month
//定义日子day
//用于保存相应年月的日历排列的字符串数组days
public MyCalendar(){} //不带参数的构造方法
public MyCalendar(int year,int month,int day){//初始年月日的构造方法
this.year=year; this.month=month; this.day=day;
}
第 2 页 共 12 页
Java高级应用开发
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[] getDays(){//返回日历分布字符串数组
return days;
}
public void setDays(){ //设置某年某月的日历
//首先,获得某年某月的某天是星期几
//创建日历实例对象
//设置日历的年、月和日(注意月份减一)
//获取当前月第一天是星期几,并保存在整型变量xq中
//获取某年某月的天数,并保存在整型变量day_num中
//如果是1、3、5、7、8、10、12月,则天数为31天;
//如果是4、6、9、11月,则天数为30天;
//如果是2月,且闰年,天数为29天,不闰年,天数为28天。
//将日历分布保存到字符串数组days中
//创建能保存42个元素的字符串数组days
//将days数组中所有元素初始化为空字符串
//将日历保存到对应的days数组元素中
}
第 3 页 共 12 页
Java高级应用开发 }
2、编写一个类CalendarPad,创建MyCalendar的实例,并完成2010年10
月的日历输出,其输出界面如下:
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
public class CalendarPad{
public static void main(String args[]){
//声明并创建MyCalendar类的对象date
//通过date对象调用setYear(int year)的方法设置年份为2010
//通过date对象调用setMonth(int month)的方法设置月份为10
//通过date对象调用setDay(int day)的方法设置日期为1
//通过date对象调用setDays()的方法获取当前年月的日历
//循环输出date对象的days数组中每个元素,每输出7个换行
}
}
4.2 完成日历记事本窗体的设计
1、用子类继承JFrame的方法创建日历记事本的主窗体CalendarFrame,要
求满足条件:(1)标题为“我的日历记事本”也可以自己定义;(2)窗体大小为
(600,300),并且大小不可以改变;(3)窗体出现在(100,100)的位置;(4)关
闭主窗体时退出应用程序。
import java.awt.*;
import javax.swing.*;
public class CalendarFrame extends JFrame{
//定义CalendarFrame的构造方法
CalendarFrame(String s){
第 4 页 共 12 页
Java高级应用开发
//设置标题
//设置窗体出现的位置和大小
//设置窗体大小不可改变
//设置窗体可见
//设置窗体的关闭方式为退出应用程序
}
}
2、将原来的CalendarPad类修改为如下:
public class CalendarPad{
public static void main(String args[]){
new CalendarFrame(“我的日历记事本”);
//CalendarFrame f=new CalendarFrame(“我的日历记事本”); }
}
即可查看窗体的样式。
4.3 完成日历记事本菜单的设计
1、在CalendarFrame上面进行修改,增加基本菜单 import java.awt.*;
import javax.swing.*;
public class CalendarFrame extends JFrame{
//声明菜单条对象mb
//声明菜单m1,m2,m3
//声明菜单项对象m11,m12,m21,m22,m23,m31,m32
//定义CalendarFrame的构造方法
CalendarFrame(String s){
//设置标题
super(s);
//设置窗体出现的位置和大小
setBounds(100,100,600,300);
//设置窗体大小不可改变
setResizable(false);
//创建菜单
//创建菜单条对象mb
第 5 页 共 12 页
Java高级应用开发
//创建菜单m1
//创建菜单项m11
//将菜单项m11加载到菜单m1中
//将菜单m1加载到菜单条mb上
//„„完成m2,m3菜单的设计与加载
//将菜单条mb加载到窗体上
//设置窗体的可见
setVisible(true);
//设置窗体的关闭方式为退出应用程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2、完成菜单的设置
(1)菜单图片加载
为打开和保存菜单添加图标open.gif和save.gif m11=new JMenuItem("打开",new ImageIcon("open.gif"));
(2)菜单快捷键设置
m11.setAccelerator(KeyStroke.getKeyStroke(‘O’)); m12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEv
ent.CTRL_MASK));
(3)在保存和退出菜单之间加一个分隔条
m1.addSeparator();
(4)将保存菜单设置为不可用 M12.setEnabled(false);
3、子菜单的设计
(1)如何在原有菜单基础上完成如下子菜单的设计 帮助
|_帮助主题
|_关于„
|_升级
第 6 页 共 12 页
Java高级应用开发
|_升级设置
|_立即升级
4.4 完成日历界面的布局与设计
1、窗体的布局
import java.awt.*;
import javax.swing.*;
public class CalendarFrame extends JFrame{
JMenuBar mb;
JMenu m1,m2,m3,m33;
JMenuItem m11,m12,m13,m21,m22,m23,m31,m32,m331,m332;
//声明容器面板p1,p11,p12,p13,p14,p2,p21
JPanel p1,p11,p12,p13,p14,p2,p21;
//声明两个列盒bv1,bv2
Box bv1,bv2;
//声明标签dateLabel并创建初始化
JLabel dateLabel;
//声明文本区域note并创建初始化
JTextArea note;
CalendarFrame(String s){
super(s);
setBounds(100,100,600,300);
setResizable(false);
mb=new JMenuBar();
m1=new JMenu("文件");
m11=new JMenuItem("打开", new ImageIcon("open.gif"));
m11.setAccelerator(KeyStroke.getKeyStroke(‘O’));
m1.add(m11);
第 7 页 共 12 页
Java高级应用开发
m12=new JMenuItem("保存", new
ImageIcon(".\\images\\save.gif"));
m12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputE
vent.CTRL_MASK));
m1.add(m12);
m1.addSeparator();
m13=new JMenuItem("退出");
m1.add(m13);
mb.add(m1);
m2=new JMenu("编辑");
m21=new JMenuItem("复制");
m2.add(m21);
m22=new JMenuItem("剪切");
m2.add(m22);
m23=new JMenuItem("粘贴");
m2.add(m23);
mb.add(m2);
m3=new JMenu("帮助");
m31=new JMenuItem("帮助主题");
m3.add(m31);
m32=new JMenuItem("关于„");
m3.add(m32);
m33=new JMenu("升级");
m331=new JMenuItem("升级设置");
m33.add(m331);
m332=new JMenuItem("立即升级");
m33.add(m332);
m3.add(m33);
mb.add(m3);
setJMenuBar(mb);
///////////////布局设计/////////////////////
//为窗体应用流型布局
//向窗体中添加列盒布局容器p1
//创建一个面板p1
p1=new JPanel();
//创建列盒布局bv1
bv1=Box.createVerticalBox();
//创建改变年月面板容器p11
//将p11放入列盒bv1中
//创建星期面板容器p12
第 8 页 共 12 页
Java高级应用开发
//将p12放入列盒bv1中
//创建日历面板容器p13
//将p13放入列盒bv1中
//创建农历提示面板容器p14
//将p14放入列盒bv1中
//将列盒bv1加入面板容器p1
//将面板容器p1加入窗体
//向窗体中添加列盒布局容器p2
//创建一个面板p2
//创建列盒布局bv2
bv2=Box.createVerticalBox();
//创建标签dateLabel
dateLabel=new JLabel("2010年10月1日");
//将dateLabel放入列盒bv2中
//创建日志文本区域容器note
note=new JTextArea(10,20);
//将note放入列盒bv2中
//创建按钮面板容器p21
//将p21放入列盒bv2中
//将列盒bv2加入面板容器p2
//将面板容器p2加入窗体
///////////////////////////////////////////
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2、日历记事本界面组件的设计
首先在CalendarFrame类中声明界面上需要使用的对象,
JLabel xqLabel[]=new JLabel[7]; //用于描述星期
第 9 页 共 12 页
Java高级应用开发
JButton rlButton[]=new JButton[42];//用于描述日历
JButton priYear,nextYear,priMonth,nextMonth,save,delete;
JTextField yearText;//用于输入年份的文本框
JLabel monthLabel;//用于显示月份的标签
JLabel nlLabel;//放在农历面板P14上,用于显示农历信息
完成修改日历面板p11的设计:
p11=new JPanel();//创建星期面板容器p11
//在面板p11上依次创建并加载priYear,yearText,nextYear,priMonth,
monthLabel,nextMonth
bv1.add(p11);//将p11放入列盒bv1中
完成星期面板p12的设计:
p12=new JPanel();//创建星期面板容器p12
//在面板p12上应用1×7的网格布局
//循环创建7个星期标签,并将标签加入面板p12中
//完成标签上内容的初始,分别为“日一二三四五六”
bv1.add(p12);//将p12放入列盒bv1中
完成日历面板p13的设计
p13=new JPanel();//创建星期面板容器p13
//在面板p13上应用6×7的网格布局
//循环创建42个按钮,并将标签加入面板p13中
bv1.add(p13);//将p13放入列盒bv1中
完成日历面板p13的设计
p14=new JPanel();//创建农历面板容器p14
//在面板p14上创建并加载农历标签
bv1.add(p14);//将p13放入列盒bv1中
完成日志处理面板p21的设计:
p21=new JPanel();//创建星期面板容器p21
//在面板p21上依次创建并加载save,delete按钮
bv2.add(p21);//将p21放入列盒bv2中
3、完成显示2010年10月的日历展示
第 10 页 共 12 页
Java高级应用开发
//首先在CalendarFrame类中声明MyCalendar类的对象mydate
MyCalendar mydate;
//然后在p13之前创建日历对象mydate,并设定当前年月日
//通过date对象调用setDays()的方法完成日历计算
p13=new JPanel();//创建星期面板容器p12
p13.setLayout(new GridLayout(6,7)); //在p13上应用6×7的网格布局
//循环创建42个按钮,并将标签加入面板p13中
for(int i=0;i
本文档为【日历记事本文档.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。