JAVA时钟日历报告.doc
- 文档编号:143851
- 上传时间:2022-10-04
- 格式:DOC
- 页数:23
- 大小:1.16MB
JAVA时钟日历报告.doc
《JAVA时钟日历报告.doc》由会员分享,可在线阅读,更多相关《JAVA时钟日历报告.doc(23页珍藏版)》请在冰豆网上搜索。
——《Java语言》课程期末作业
《Java语言》课程期末作业
题目第三题时间日历
学院计算机学院
专业XXX
班别
学号
姓名
2011年11月
一、课程题目
设计一个时间日历,交互性要求:
能够设置时间。
例如:
Windows7系统自带日历:
其它功能可自行扩展。
二、题目分析与设计
1.使用的开发环境:
Eclipse+JDK1.6+windows7(64bit)sp1
2.题目的需求
由题目的要求可以分析得出以下基本需求:
(1)系统有三个模块,左边显示的是时间,右边显示的日历。
日期部分是一台历形式显示,时间部分包括图形钟和数字钟。
(2)有指针时钟和数字时钟模块,可以同步系统时间,动态准确走时
(3)日历初始态是根据部分是本地系统时间为准,在日历内用标记显示当前月的今天。
(4)在日历模块内,日历可以通过点击选择下拉框查看过去和未来某一年月的日期。
(5)有设置模块,允许用户输入正确格式的时间而改变程序的当前日期。
系统的日期不受影响,在同步系统时间后,更改此程序的时间不再与系统同步。
3.软件功能架构图。
时钟功能
本程序主要有三个功能:
设置
(1)设置当前日期
设置功能
主程序
(2)显示时钟时间(时分秒
设置
(3)显示日历(年月日)
日历功能恶搞
时钟功能的实现:
类名为Clock,首先在构造时钟面板,并对时钟面板的参数设定(标题,大小,背景,布局)。
然后重写方法voidpaint(Graphicsg)在此方法内将绘制时钟的一帧,此方法中先获取时钟面板容器的一些参数(边界大小,面板高度),然后用得到的参数确定所要绘制的时钟的圆心位置,再根据几何知识计算出表盘12个刻度的位置计算出,并将12个数字绘制在对应的位置,然后获取系统的或者用户设置的时间(时分秒),将该时间转化为字符串表示并根据设定的字体和颜色绘制到时钟面板内的指定位置作为数字时钟。
再根据几何知识计算出时、分、秒针的位置,然后根据设置线宽和颜色绘制到面板中。
创建时钟面板
设置面板参数
获取面板参数
绘制表盘
获取当前时间
绘制数字时钟
绘制指针时钟
日历功能的实现:
类名为MyCalendar,首先创建日历面板,并对日历面板的参数设定(标题,大小,布局)。
然后创建年和月的选择下拉列表,添加年月标识并布局到主面板的BorderLayout.NORTH位置,创建方法show_Day()用于显示所选择的月内的天数和各个日期所处的位置,此方法首先获取当前的年月或者从下拉框选择的年月。
然后通过该选择的或者设置的年月创建新的日历,穿件新的日期后,得到所选月份的天数以及这一年是否为闰年,通过get(Calendar.DAY_OF_WEEK)获取当前月的第一天的位置,然后以此得出该月各天的位置,最后加入到主面板中,布局到BorderLayout.CENTER位置。
创建日历面板
设置面板参数
创建年月下拉列表标识加入面板
获取当前时间或者下拉选择
创建新日历获取该月天数和该月第一天的位置
绘制每一天的位置加入主面板
设置功能的实现:
类名为Test和DateTest;因为设计设置功能通过点击主界面的设置-更改时间按钮实现,所以将设置功能放于主界面所在的Test类中,而类DateTest主要实现将获取的字符串格式的日期转变为一个日历实例。
首先在主界面创建菜单栏“设置”和“帮助”。
在“设置”下有“更改时间”这个菜单项,“帮助”下有“关于”其中有本程序的相关信息介绍。
在“更改时间”这个菜单项上增加监听,当鼠标单击时触发。
触发操作后将弹出对话框,用户可在对话框内输入更改为的时间,获得设置的时间后,将实例化的Clock和Calendar的相关时间变量改变,并刷新界面,完成时间日期的设置。
创建主界面
添加设置菜单
点击更改时间
弹出对话框
输入对应格式的日期,时间
调用实例化的Clock和Calendar的时间变量,更改为设置的时间
自动刷新界面,完成时间日期设置
4界面设计过程,设计上的创意及组件的布局策略。
界面的设计:
整体设计仿照windows7系统自带的时间日历设计,分为左右两大块的BorderLayout方式布局,但主色调采用暗色调为主,呈现夜光效果,在界面的上方设计有菜单,方便对时间进行设置,还有设计一个帮助菜单,是程序的关于信息。
在日历的主体部分日历置于整个界面的左边,时钟置于整个界面的右边,其实也可以将时钟设置与左边,但为了与windows7的日历排列方式相似就放置于右边了。
在日历模块上,对整个模块设计了一个边框以标识其为独立模块,在左上角添加有“日历”字样,在日历子面板内有两个下拉按钮,用于鼠标或键盘方向键快速选择年月,这点较windows的点击翻页更为快速,而在日历子面板的下方大部分区域用于显示所选年月的日历情况。
在显示日期的部分上方为星期标识用“一”“二”…..等,日期面板中没有日期的地方不显示,为背景色,凡是处于周末的日期均标记为红色,“今天”标记为蓝色。
在时间面板内,整个面板也设计了一个边框并在边框上的左上角添加“时钟”字样,面板底色为深灰色,而表盘设计和刻度为青色,呈现出夜光效果,在时钟内部的下方参考汽车仪表盘的设计,内嵌数字时钟。
表盘的指针选择用于交通的红黄绿色,十分醒目。
整体1:
1效果如下:
5.程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。
主界面的逻辑实现:
程序运行后,首先构造一个新的主类Test的实例:
在主类继承JFrame,在主类内,引用主类的的构造方法,设置窗体的标题为“Java时钟日历”,然后创建菜单栏mb,菜单m,n、菜单项m2,n2;然后将菜单项加入菜单,菜单加入菜单栏;再实例化Clock和Calendar。
最后将菜单,clock和Calendar的实例加入主界面。
设置主界面的大小和位置,设置主界面大小不可调整和可见。
再设置用户在此窗体上发起"close"时默认执行的操作。
整个主界面的逻辑到此实现。
main()开始
标题:
时间日历
菜单:
设置
菜单项目:
更改时间
实例化主类Test
主面板
菜单项目:
关于
菜单:
帮助
菜单栏
实例化clockclo
程序结束
实例化MyCalendarcal
设置主界面大小,位置,不可见,close操作
下面所有图中:
实线为逻辑关系
而虚线为实际运行流程图
菜单设置功能的逻辑实现:
用户点击
弹出时间输入框串
菜单——
更改时间
对“更改时间”加入
ActionListener
获取输入的字符串格式为
yyyy-MM-ddHH:
mm:
ss
创建日历set_c;
设置set_c.setTime(set);
实例化DateTest
调用add_t方法
获取设置日期set
获取设置时间与系统时间差(秒)diff
调用cal的下拉框变量改为所设置的年月所在项setSelectedIndex();
得出与系统的时间差(时分秒),设置实例clo的add_h,ad_m,add_s,当刷新clo的panel的时候将显示新时间
调用cal的当前日期变量cal.now_year,now_month,now_date改为所设置的日期
设置cal的日期选择为false
调用cal的日期绘制方法
结束
虚线为实际运行流程
设置panel的背景为深灰色。
标题为“时钟”大小为300,300
Clock的逻辑实现:
重写Paint()方法
定时器触发repaint()
Clock开始
继承Jpanel类
调用getInsert.Leftgetinsets.top
getSize().height计算表盘的位置和半径以及圆心坐标,绘制表盘
由圆心和半径绘制表盘的十二个刻度
对Calendarnow使用now.get()获取当前时间;
将获取的要绘制的时间转化为string串,在panel指定位置上绘制上string显示为数字时钟
获取要绘制的时间:
now.get()+add_*
未设置时钟时add_*默认为0
设置后,为更改时钟时所得到的值
虚线为实际运行流程结束
利用获取的时间和几何知识计算时分秒针的位置然后由设定的格式画出时分秒针
Calendar的逻辑实现
MyCalendar开始
继承Jpanel类
取当前系统日期的年now_year月now_m
onth日now_date
设置panel的背景.大小.布局
创建2个年月的JComboBox
和两个Jlabel“年”“月”
Show_Day
方法
由当前的年份得出前后五十年,加入到JcomboBox设置JcomboBox选中当前年份,和当前月份
用户点击
设置对JcomboBox监听
获取当前年月或者选择的年月
修改日期后主类调用
获取选取月的天数并考虑对闰年的检测
构造新日历
结束
将每一天的位置加入panel内
获取该月第一天的位置
星期标识加入panel
主要的类和关键方法的说明:
本程序有四个类:
分别为Test主类MyCalendar类和clock类还有一个用于设置主类TEST类
publicclassTestextendsJFrameimplementsActionListener
主要是对窗口的外观设计,和对clock和Calendar的实例化,另外包含设置菜单的监听和时钟绘制的刷新,全部内容如下
1构造函数创建一个窗口2添加菜单栏 3实例化时钟日历 4添加菜单,时间,日历到主面板5设置窗体参数6监听菜单7设置日历新日期8更改日历的下拉选择9更改日历的日期显示10更改时钟显示日期11创建一个监听事件12创建一个时间计数器13实现ActionListener接口必须实现的方法14主函数
Clock类
publicclassClockextendsJPanel
里面的主要用于绘制时钟面板:
其中的paint方法为绘制时钟的关键;
MyCalendar类
publicclassMyCalendarextendsJPanelimplementsActionListener
主要用于显示日历面板,其中的Show_Day()为显示日期的关键:
classDateTest
用于设置时间的时候,将输入的字符串转为日期
关键方法说明:
Paint()方法的具体内容;其中涉及相关几何知识的地方不做阐述方法主要通过获取的面板大小信息确定表盘的位置,然后使用Graphics2D进行表盘的绘制,而对指针的绘制依不同的时间位置不同;而时间可以是系统的时间也可以是设置的时间;通过求时间差的办法将二者统一到一起;在没有设置时钟的情况下,默认时间差为0;而设置了之后则求出这个时间差;每次绘图的时候都会在系统时间上加上这个差值便得到了设置的时钟;另外
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 时钟日历 报告