为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

日历记事本文档_0

2017-09-21 14页 doc 33KB 32阅读

用户头像

is_954223

暂无简介

举报
日历记事本文档_0日历记事本文档_0 日历记事本文档 Java高级应用开发 GUI综合应用项目:日历记事本设计 一、实训目的 1、巩固JAVA程序设计的基本理论知识。 2、将理论知识和实践结合起来,将理论知识应用到实践中,编写应用程序。 3、通过实训,掌握基本的编程思想方法,具备一定的编程能力。 二、实训的基本要求 2.1 理论要求 ,、熟悉JAVA基本语法及三种基本结构(顺序、选择、循环)。 ,、熟悉JAVA面向对象程序设计思想。 ,、熟悉JAVA的类抽象、封装、继承、多态的特性。 在此基础上,多查阅资料,独立思考完...
日历记事本文档_0
日历记事本文档_0 日历记事本文档 Java高级应用开发 GUI综合应用项目:日历记事本设计 一、实训目的 1、巩固JAVA程序设计的基本理论知识。 2、将理论知识和实践结合起来,将理论知识应用到实践中,编写应用程序。 3、通过实训,掌握基本的编程思想方法,具备一定的编程能力。 二、实训的基本要求 2.1 理论要求 ,、熟悉JAVA基本语法及三种基本结构(顺序、选择、循环)。 ,、熟悉JAVA面向对象程序设计思想。 ,、熟悉JAVA的类抽象、封装、继承、多态的特性。 在此基础上,多查阅资料,独立思考完成程序代码,并写出详细的设计书。 2.2 设备要求 JDK1.5.0以上版本,JBuilder或Eclipse3.0。 三、实训内容 运用JAVA语言设计一个GUI 界面的日历记事本。系统将日历、记事本结合在一起,用户可以方便地在任何日期记载有关内容以及查看某个日期记载的内容。其内容为: 1、界面的左侧是日历。该日历可以按年前后翻动,当鼠标单击“上一年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。 2、也可以在某年内按月前后翻动。当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月”当前日历表的月份将加一。 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月的日历输出, 其输出界面如下: 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,InputEvent.CTRL_MASK)); (3)在保存和退出菜单之间加一个分隔条 m1.addSeparator(); (4)将保存菜单设置为不可用 M12.setEnabled(false); 3、子菜单的设计 (1)如何在原有菜单基础上完成如下子菜单的设计 帮助 |_帮助主题 |_关于„ |_升级 第 6 页 共 12 页 Java高级应用开发 |_升级设置 |_立即升级 4.4 完成日历界面的布局与设计 1、窗体的布局 第 7 页 共 12 页 Java高级应用开发 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 m12=new 第 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<rlButton.length;i++){ rlButton[i]=new Jbutton(); //设置按钮上显示的数字 } bv1.add(p13);//将p13放入列盒bv1中 思考:如何达到显示系统当前年月的日历呢, 4、对界面的优化 (1)将日历中周日列和周六列的字体颜色(组件的前景颜色)分别设置为红色和蓝色; (2)将星期的字体设置为12号的隶书,并且加粗;并且将日历的字体设置为12号黑体; (3)在上年、下年、上月和下月按钮设置快捷键;在保存和删除按钮上增加图标; (4)将星期标签凸出显示; (5)将日历按钮凹下显示。 4.5 完成按钮事件的处理 事件处理一般需要三个步骤:一是,引用监视器接口implements 第 11 页 共 12 页 Java高级应用开发 ****ActionListener ;二是,为事件源添加监视器 add****ActionListener(this);三是,重写事件的抽象方法完成功能实现。 1、完成日历调整事件的设计 (1)完成点击上年、下年将dateText文本框中数字加1或减1的功能; (2)完成上月、下月将monthLabel标签中数字加1或者减1的功能; 思考:如何限制年月不超过实际限制, (3)当改变年月时,将日历分布也随之改变。 (4)完成dateText文本框的回车事件,完成日历改变 2、日历按钮点击事件的处理 (1)当日历按钮获得焦点时,将该按钮背景设置为灰色Color.gray ;失去焦点时恢复原来的背景颜色; (2)当点击日历按钮时,将当前年月日显示在标签dateLabel中,如:2010年10月1日; (3)当点击日历按钮时,在“农历及提示信息面板”中显示对应日期的农历信息。 4.6 完成回车事件与农历显示 4.7 日志保存与展示的实现 五、 第 12 页 共 12 页
/
本文档为【日历记事本文档_0】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索