




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GUI综合应用项目:日历记事本设计一、实训目的1、巩固JAVA程序设计的基本理论知识。2、将理论知识和实践结合起来,将理论知识应用到实践中,编写应用程序。3、通过实训,掌握基本的编程思想方法,具备一定的编程能力。二、实训的基本要求2.1理论要求1、熟悉JAVA基本语法及三种基本结构(顺序、选择、循环)。2、熟悉JAVA面向对象程序设计思想。3、熟悉JAVA的类抽象、封装、继承、多态的特性。在此基础上,多查阅资料,独立思考完成程序代码,并写出详细的设计书。 2.2设备要求JDK1.5.0 以上版本,JBuilder 或 Eclipse3.0。三、实训内容运用JAVA语言设计一个GUI界面的日历记
2、事本。系统将日历、记事本结 合在一起,用户可以方便地在任何日期记载有关内容以及查看某个日期记载的内 容。其内容为:1、界面的左侧是日历。该日历可以按年前后翻动,当鼠标单击“上一年” 按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年 份将加一。2、也可以在某年内按月前后翻动。当鼠标左键单击“上月”按钮时 ,当前日 历的月份将减一;当鼠标左键单击“下月”当前日历表的月份将加一。3、使用鼠标左键在要选择的日期上单击,如有记事内容,程序将弹出对话 框提示该日有记事内容,提示用户是否用记事本显示该内容。4、选择具体日期后,可以将记事本的内容保存起来,形成一个日志。5、日历记事本共有
3、4个Java源文件:MyCalendar.java,用来描述日期类; CalendarPad.Java,负责创建日历记事本主窗口,该文件含有 main方法,程序 从该类开始执行;CalendarFrame.java,用来描述日历记事本窗体;NotePad.Java,负责创建记事本(也可以不单独定义类,将其放在日历记事本 窗体中定义)。6运行效果图7、附加功能:在完成以上功能基础上为日历记事本增加农历显示、添加背 景图片、增加重要事务提醒等功能。四、实训步骤前期准备:通过JDK1.6API中文版学习java.util.Calendar 类,了解日历记事本项目的基本情况,分析其设计思路。4.1完成
4、日历类MyCalendar的设计1、完成加粗注释下代码的填写import java.util.Cale ndar;public class MyCale ndar /定义年year/定义月份mon thII定义日子day/用于保存相应年月的日历排列的字符串数组dayspublic MyCale ndar()/不带参数的构造方法public MyCale ndar(i nt year,i nt mon th,i nt day)/初始年月日的构造方法this.year=year; this.m on th=mon th; this.day=day;public in t getYear() /返回
5、年份retur n year;public void setYear(i nt year) /设置年份this.year = year;public in t getMo nth() /返回月份return mon th;public void setMo nth(i nt mon th) /设置月份this.m on th = mon th;public in t getDay() /返回日return day;public void setDay(i nt day) /设置日this.day = day;public Stri ng getDays()返回日历分布字符串数组retur n
6、days;public void setDays() /设置某年某月的日历/首先,获得某年某月的某天是星期几/创建日历实例对象/设置日历的年、月和日(注意月份减一)/获取当前月第一天是星期几,并保存在整型变量xq中/获取某年某月的天数,并保存在整型变量day_num中/如果是1、3、5、7、8、10、12月,则天数为 31天;/如果是4、6、9、11月,则天数为30天;28天。/如果是2月,且闰年,天数为 29天,不闰年,天数为/将日历分布保存到字符串数组 days中/创建能保存42个元素的字符串数组 days/将days数组中所有元素初始化为空字符串/将日历保存到对应的 days数组元素中2
7、、编写一个类 CalendarPac,创建MyCalendar的实例,并完成 2010年10月的日历输出,其输出界面如下:日-一一二二二-三四五六12345678910111213141516171819202122232425262728293031public class Cale ndarPadpublic static void main(String args)/声明并创建MyCalendar类的对象date/通过date对象调用setYear(int year)的方法设置年份为 2010/通过date对象调用setMo nth(i nt mon th)的方法设置月份为 10/通过d
8、ate对象调用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.swi ng.*;public class C
9、ale ndarFrame exte nds JFrame/ 定义CalendarFrame的构造方法Cale ndarFrame(Stri ng s)/设置标题/设置窗体出现的位置和大小/设置窗体大小不可改变/设置窗体可见/设置窗体的关闭方式为退出应用程序2、将原来的CalendarPad类修改为如下:public classCale ndarPadpublic static void main(String args)new Cale ndarFrame( 我的日历记事本”);/Calen darFrame f=new Cale ndarFrame(我的日历记事本” );即可查看窗体的样式
10、。4.3完成日历记事本菜单的设计1、在CalendarFrame上面进行修改,增加基本菜单import java.awt.*;import javax.swi ng.*;public class Cale ndarFrame exte nds JFrame/声明菜单条对象 mb/声明菜单m1,m2,m3/ 声明菜单项对象 m11,m12,m21,m22,m23,m31,m32/定义CalendarFrame的构造方法Cale ndarFrame(Stri ng s)/设置标题super(s);/设置窗体出现的位置和大小setBou nds(100,100,600,300);/设置窗体大小不可改
11、变setResizable(false);/创建菜单/创建菜单条对象 mb/创建菜单ml/创建菜单项mil/将菜单项mil加载到菜单 mi中/将菜单mi加载到菜单条 mb上/ ”完成 m2,m3菜单的设计与加载/将菜单条mb加载到窗体上/设置窗体的可见setVisible(true);/设置窗体的关闭方式为退出应用程序setDefaultCloseOperatio n( JFrame.EXIT_ON_CLOSE);2、完成菜单的设置(1) 菜单图片加载为打开和保存菜单添加图标open.gif和save.gifm11= new JMe nultemC打开 ”,new ImageIc on (op
12、e n.gif);(2) 菜单快捷键设置m11.setAccelerator(KeyStroke.getKeyStroke(O);m12.setAccelerator(KeyStroke.getKeyStroke(KeyEve nt.VK_S,I nputEv en t.CTRL_MASK);(3) 在保存和退出菜单之间加一个分隔条m1.addSeparator();(4) 将保存菜单设置为不可用M12.setE nabled(false);3、子菜单的设计(1) 如何在原有菜单基础上完成如下子菜单的设计帮助|_帮助主题|_关于,|_升级|_升级设置|_立即升级4.4完成日历界面的布局与设计1
13、、窗体的布局日历展示容器日志记事容器农历及提示信息容器保存删除按钮容器import java.awt.*;import javax.swi ng.*;public class Cale ndarFrame exte nds JFrameJMe nuBar mb;JMe nu m1,m2,m3,m33;JMenuItem m11,m12,m13,m21,m22,m23,m31,m32,m331,m332;/ 声明容器面板 p1,p11,p12,p13,p14,p2,p21JPanel p1,p11,p12,p13,p14,p2,p21;/声明两个列盒 bv1,bv2Box bv1,bv2;/ 声
14、明标签dateLabel并创建初始化JLabel dateLabel;/声明文本区域note并创建初始化JTextArea no te;Cale ndarFrame(Stri ng s)super(s);setBou nds(100,100,600,300);setResizable(false);mb=new JMe nuBar();m仁new JMenu(”文件);m11= new JMenuItem(”打开, new ImageIcon(open.gif) );m11.setAccelerator(KeyStroke.getKeyStroke(O);m1.add(m11);I!m12=n
15、ewJMe nultem(”Imagelcon (.imagesWsave.gif);m12.setAccelerator(KeyStroke.getKeyStroke(KeyEve nt.VK_S,l nputEven t.CTRL_MASK);m1.add(m12);m1.addSeparator();m13=new JMenultem(”退出);m1.add(m13);mb.add(m1);m2=new JMenu(”编辑);m21= new JMe nultem(”复制”);m2.add(m21);m22=new JMe nultem(”剪切”);m2.add(m22);m23=new
16、 JMe nultem(”粘贴);m2.add(m23);mb.add(m2);m3=new JMenu(”帮助);m31= new JMenultem(”帮助主题);m3.add(m31);m32=new JMe nultem(”关于,”);m3.add(m32);m33=new JMenu(”升级);m33仁new JMenultem(”升级设置);m33.add(m331);m332=new JMenultem(”立即升级);m33.add(m332);m3.add(m33);mb.add(m3);setJMe nuBar(mb);/布局设计 /为窗体应用流型布局/向窗体中添加列盒布局容
17、器p1/创建一个面板p1p1= new JPa nel();/创建列盒布局 bv1bv1=Box.createVerticalBox();/创建改变年月面板容器p11/将p11放入列盒bv1中/创建星期面板容器p12II将p12放入列盒bv1中/创建日历面板容器 p13II将p13放入列盒bv1中II创建农历提示面板容器 p14II将p14放入列盒bv1中II将列盒bv1加入面板容器plII将面板容器pl加入窗体II向窗体中添加列盒布局容器p2II创建一个面板p2II 创建列盒布局bv2bv2=Box.createVerticalBox();II 创建标签dateLabel dateLabel
18、=new JLabel(2010 年 10 月 1 日);II 将dateLabel放入列盒bv2中II创建日志文本区域容器notenote=new JTextArea(10,20);II将note放入列盒 bv2中II创建按钮面板容器p21II 将p21放入列盒bv2中II 将列盒bv2加入面板容器p2II将面板容器p2加入窗体IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIsetVisible(true); setDefaultCloseOperatio n( JFrame.EXIT_ON_CLOSE);2、日历记事本界面组件的设计首先在Calenda
19、rFrame类中声明界面上需要使用的对象,JLabel xqLabel=new JLabel7; II用于描述星期JButton rIButt on =new JButt on 42;/用于描述日历JButton priYear, nextYear,priM on th, nextM on th,save,delete;JTextField yearText;/用于输入年份的文本框JLabel mon thLabel;/用于显示月份的标签JLabel nlLabel;/放在农历面板P14上,用于显示农历信息完成修改日历面板p11的设计:p11= new JPanel();/创建星期面板容器 p
20、11/ 在面板 p11 上依次创建并加载priYear,yearText, nextYear,priMo nth,mon thLabel, nextM onthbv1.add(p11);/ 将 p11 放入列盒 bv1 中完成星期面板p12的设计:p12=new JPanel();/创建星期面板容器 p12/ 在面板p12上应用1 X 7的网格布局/循环创建7个星期标签,并将标签加入面板p12中/完成标签上内容的初始,分别为日一二三四五六”bv1.add(p12);/ 将 p12 放入列盒 bv1 中完成日历面板p13的设计p13=new JPanel();/创建星期面板容器 p13/ 在面板
21、p13上应用6X 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月的日历展示/首先在 CalendarFrame类中声明MyCalendar类的对象 mydateMyCale ndar mydate;/然后在p13之前创建日历对象 mydate,并设定当前年月日/通过date对象调用setDays()的方法完成日历计算p13=new JPanel(); /创建星期面板容器 p12p13.setLayout(new GridLayout(6,7); /在 p13上应用 6X 7 的网格布局/ 循环创建42个按钮,并将标签加入面板p13中for(i nt i=O;ir
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大竹县竹中中考数学试卷
- 营养型输液项目风险识别与评估综合报告
- 自筹经费措施方案
- 喀什非开挖顶管施工方案
- 智能制造与物联网(IoT)应用的策略及实施方案
- 新型城镇化中的农村振兴与现代农业发展的策略
- 能源结构优化与清洁能源转型的策略
- 降碳减污扩绿增长的经济学分析
- 文化交流与一带一路人文合作的推动路径
- 更大力度稳定和扩大就业的策略及实施路径
- 人工挖孔桩施工危险源辨识与评价及应对措施
- 品管圈成果汇报——提高导管固定正确率PPT课件
- 第2讲 麦克斯韦方程组
- 读懂教材、读懂学生、读懂课堂,构建和谐有效的课堂教学
- 装饰施工进度计划网络图及横道图
- 机械毕业实习报告
- 材料科学与工程专业 毕业论文
- 糖尿病视网膜病变PPT课件
- 古诗分类讲解五思乡怀人诗
- 多极磁燃气环保节能器-合力金科技
- 青少年心理学书籍:青少年心理学
评论
0/150
提交评论