第六项—详细设计

类详细设计    

    各个类的简要描述(在整个软件中的地位及实现功能的简要描述,其继承层次关系及所实现的接口等);详细设计每个类的成员变量、构造方法与方法;并根据详细设计给出每个类的实现代码。

1.主函数CalendarWindow类

(1)简要描述:

该类是整个程序的主框架,是javax.swing包中Jframe的一个子类。并实现了ActionListener、MouseListener和FocusListener接口。

(2)类详细设计:

该类的成员变量、构造方法及方法设计如下:

1) 成员变量

  • year,month和day是int型变量。它们的值分别确定年份、月份和日期。
  • calendarMessage是CalnedarMessage对象,该对象用来处理与日期有关的数据。
  • calendarPad是CalendarPad对象,该对象可以显示与日期有关的数据。
  • notPad是NotPad的对象。具有编辑、读取、保存和删除日志的功能。
  • showYear和showMonth是JtextField类创建的文本框,用来显示年月。
  • showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。
  • calendarImage是CalendarImage创建的对象,用来显示图像。
  • clock是Clock创建的对象,用来显示时钟。
  • nextYear,PreviousYear,nextMonth和PreviousMonth是JButton创建的按钮对象,名字依次为“下年、上年、下月、上月”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。
  • savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。

2)      构造方法

  • CalendarWindow()是构造方法,负责完成窗口初始化。

3)      方法

  • actionPerformed(ActionEvent)方法是CalendarWindow类实现的ActionListener接口中的方法。CalendarWindow创建的窗口是nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,deleteDailyRecord和readDailyRecord按钮的ActionEvent事件监视器,当用户单击其中按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。
  • mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中的方法。CalendarWindow创建的窗口时showDay数组中的JtextField文本框的MouseEvent事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将执行mousePress(MouseEvent)方法进行相应操作。
  • focusGained(FocusEvent)和focusLost(FocusEvent)方法是CalendarWindow类实现的FocusListener接口中的方法。CalendarWindow创建窗口是showDay数组中的JtextField文本框的FocusEvent事件监视器,当用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行focusGained(FocusEvent)或focusLost(FocusEvent)方法进行相应的操作。
  • doMark()方法负责对有日志的日期作出标志。
  • main方法是程序运行的入口方法。

2. CalendarMessage类

     CalendarMessage类创建的对象calendarMessage是CalendarWindow窗口的重要成员对象之一,负责处理和日期有关的数据。该类的有关数据说明如下:

1)      成员变量

 year,month,day是int型数据,它们的值分别确定年份、月份和日期。

2)      方法

  •  setYear(int)和getYear()方法分别用来设置year和获取year的值。
  •  setMonth(int)和getMonth()方法分别用来设置month和获取month的值。
  •   setDay(int)和getDay()方法分别用来设置和获取day的值。
  •  getMonthCalendar()方法是用来处理日期数据,使其按着习惯来显示。即日历牌中每行的第一列为“星期天”。getMonthCalendar()方法根据year,month和day的值返回一个存放着“日历”数据的String类型的数组,例如,如果某月有30天,而且该月的第一天是星期三,那么返回的String类型的数组是:“”,“”,“”,“1”,“2”,·····,“30”。

3. CalendarPad类

    CalendarPad类是javax.swing包中Jpanel容器的子类,所创建的对象:calendarPad是CalendarWindow类中最重要的成员之一,负责显示经CalendarMessage类处理后的日期数据,被添加到CalendarWindow窗口的左上侧。以下是该类的有关说明:

1)      成员变量

  •  year,month和day是int型数据,它们的值分别确定年份、月份和日期
  •   calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。
  •   showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。
  •   “星期”是String数组,单元的值依次为“SUN日”、“MON一”、“TUE二”、“WED三”、“THU四”、“FRI五”、“SAT六”。

2)      构造方法

  •  CalendarPad()是构造方法,用来创建calendarPad对象。

3)      方法

  •  setShowDayTextField(JtextField[])方法负责设置showDay数组。
  •  setCalendarMessage(CalendarMessage)方法负责设置calendarMessage对象。
  •  showMonthCalendar()方法负责显示“日历”。

4. NotePad类

      NotePad类javax.swing包中的Jpanel容器的子类,实现了ActionListener接口,所创建的对象:notePad是MineGame CalendarWindow类中的重要成员之一,作为一个容器添加到CalendarWindow窗口的右上侧以,下是该类的有关说明:

1)成员变量

  •  text 是JtextArea创建的文本区,可在text中编译多行文本。
  •  showMessage 是 JtextField 创建的文本条,用来显示和日期相关的数据。
  •  menu是 JpopupMenu 创建的弹出式菜单。
  •  itemCopy、itemCut、itemPaste、itemClear 是JmenuItem 创建的菜单项,名字依次是“复制”, “剪切”, “黏贴”, “清空”。

2)      构造方法

  •   NotePad()构造方法,用来创建notePad对象。

3) 方法

  •   setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。
  •   save(File,int,int,int)方法根据参数指定日期保存日志
  •   delete(File,int,int,int) 用于删除日志
  •  read(File,int,int, int)用于读取日志。

5. CalendarImage类

    CalendarImage创建的对象负责绘制图像

    CalendarImage类是javax.swing包中Jpanel容器的一个子类,创建的对象calendarMessage是CalendarWindow类的成员之一,负责绘制图像,作为一个容器添加到CalendarWindow窗口的左下侧,以下是该类的有关说明:

1)      成员变量

  •  imageFile是File对象,用来存放图像文件的引用
  •  image 是Image对象
  •  tool 是Tookit对象,负责创建image对象

2)      构造方法

  •  CalendarImage()是构造方法,负责创建calendarImage 对象

3)      方法

  •  setImageFile(File)方法负责设置imageFile 对象,并根据imageFile创建image
  •  paintComponent(Griphics)方法负责绘制image

6. Clock

         Clock类是javax.swing包中Jpanel容器的子类,并实现了ActionListener接口,所创建的对象:clockCalendarWindow类中的成员之一,负责显示时间,被添加到CalendarWindow窗口的右下侧,以下是该类的有关说明:

1)     成员变量

  •   date是Date对象,负责封装本地时间
  •   secondTime是javax.swing包中Timer类创建的计时
  •   hour,minute和second 是int型数据,分别飞“小时”,“分钟”和“秒”
  •   secondLine,minuteLine和hourLine是Lint2D对象,分别负责绘制“时针”,“分针”,“秒针”
  •   pointSX,pointSY是double型数组,其单元值用来表示秒针端点的坐标
  •   pointMX,pointMY是double型数组,其单元值用来表示分针端点坐标
  •   pointHX,pointHY是double型数组,其单元值用来便是时针端点坐标

2)      构造方法

  •   Clock()是构造方法,用来创建clock对象

3)      方法

  •  initPoint()负责创建表盘所需要的坐标点
  •  paintComponent(Graphics)负责完成绘制工作
  •  actionPerformed(ActionEvent)是接口ActionListener中的方法。使用Timer类的构造方法:timer(int a ,Object  b )创建一个计时器,其中的参数a 的单位是毫秒,确定计时器每隔a毫秒“振铃”一次,参数b是计时器的监视器。计时器发生的振铃时件是ActionEvent类型时件,当振铃时间发生时,监视器就会监视到这个事件,监视器就会回调用ActionListener接口中的actionPerformed(ActionEvent)方法,该方法所做的操作是:每隔1秒钟,让秒针前进一个刻度,既secondLine改变端点坐标;每隔1分钟,让分针前进一个刻度(表盘一周为360°,每个时刻为6°),既muniteLine改变端点坐标;每隔12分钟,让时针前进一个刻度,既hourLine改变端点坐标。

 

posted @ 2015-06-13 21:40  琴韵畔晨曦  阅读(346)  评论(6编辑  收藏  举报