Java小日历
1.课程设计的目的
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
本课程设计是一个JAVA小日历组件的设计,利用Frame框架类、面板类进行图形化界面设计,
实现小日历的公历显示等功能。
2.设计方案论证
2.1设计思路
本程序的要求为:
①.使用图形用户界面;
②.本程序能够实现日期与星期的查询。
在设计小日历中的重要内容如下
java Calendar方法:Calendar 抽象类定义了足够的方法,让我们能够表述日历的规则。我们也可以自己的 Calendar 实现类,然后将它作为 Calendar 对象返回(面向对象的特性)。在 Calendar 的方法中,get() 和 add() 会让 Calendar 立刻刷新。本程序的中心设计即是利用Calendar类来实现。
javax swing JSpinner用法:让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。它能够方便地选择日期、数字或列表中的选项。Spinner 通常提供一对带小箭头的按钮以便逐步遍历序列元素。键盘的向上/向下方向键也可循环遍历元素。也允许用户在Spinner 中直接输入合法值。JSpinner显示不同的内容,采用不同的模型,像SpinnerDateModel,SpinnerListModel,SpinnerNumberModel,只要对模型修改,就可以实现想要的精确的功能。本程序利用该组件实现了年份的修改。
setOpaque 用法:setOpaque (false)的作用是将button的背景改为其parent的背景。如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制其某些或所有像素,从而允许其下面的像素透视出来。
基于Java Swing的超链接标签和超链接按钮的实现:java.awt.Desktop类的java.awt.Desktop.isDesktopSupported()可以获取当前系统是否支持java awt桌面扩展.如果支持可以获取当前系统的Desktop,则使用:
java.awt.Desktop dp = java.Desktop()
dp.browse(java.URI) 就可以启动系统默认的浏览器。本程序自定义一个超链接标签控件[LinkLabel]类进行实现该功能。
java中实现表格的多表头显示:主要就是三个应用类ColumnGroup, GroupableTableHeader,GroupableTableHeaderU和一个示例类GroupableHeaderExample。
(1)本小日历设计主体结构
设计一个框架MainFrame,然后在MainFrame里添加一个MainPanel面板。定义一个MainPanel面板类,该面板以边布局格式,所有其他面板、标签等均添加到所设定的面板中。
(2) MainPanel面板北部(上方),添加一个年月面板YearMonthPanel
该年月面板主要放年份显示、月份显示、标题显示。YearMonthPanel面板也使用边布局格式,西部添加一个年份面板,放年份信息;中部添加一个TextPanel面板,放标题文本显示信息;东部添加一个月份面板MonthPanel,放月份下拉框信息。
(3)MainPanel主面板的中部添加
添加一个DaysPanel面板用于放置月份的天数表格信息。
(4)MainPanel主面板的南部(下方)添加
添加一个InfoPanel面板,主要用于放置显示个人信息。
(5)InfoPanel面板上设计添加一个超级链接标签
该链接可以链接到个人空间
2.2设计方法
(1)流程图设计
图1 流程图
(1)设计类及对象设计
在本程序中:定义了一个Frame类,主要定义一个窗体框架,用于显示日历信息,并在主函数中只创建一个该窗体对象实现程序功能。
定义了一个主日历面板类Xiaorili,其中包含了日历设计所用到的全局变量、功能函数等,在Frame类里定义了其对象。在该日历面板类里又设计了一个内部类CalendarTable表格类,用于布局日历天的显示格式。
为了设计一个超级链接,定义了一个LinkLable类,单独保存在一个文件LinkTbale.java中,在日历面板类Xiaorili里定义了其对象。
(2)程序设计思路
.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,
否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
.输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
④.如果年份小于1582年则程序不予判断。
3.设计结果与分析
(1)运行程序,出现日历界面:
图2 主界面
(2)单击年份的组合框侧边箭头,改变年份,则日历跟随改变:
图3 改变年份
(3)单击月份下拉框,改变月份,则日历也跟随改变:
图4 改变月份
(4)鼠标移动到“访问志文工作室”标签上,则字体颜变为绿:
图5 访问空间
(5)鼠标单击超级链接标签,则调用默认浏览器打开了我的空间:
图6 我的空间
4.设计体会
本次课程设计我决定做日历的设计。主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个小日历程序,由于其功能简单设计也相对较易,对于我的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。
对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。
经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。
通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。
5.参考文献
[1]耿祥义.Java大学实用教程[M].北京:电子工业出版社,2008.5:1-260
[2]曾令明.Java程序设计教程[M].北京:北京邮电大学出版社,2007.8:34-120
[3]宛延闿.实用Java基于java的课程设计题目程序设计教程[M].北京:机械工业出版社,2006.4234-250
[4]叶核亚.Java程序设计实用教程(第2版)[M].北京:电子工业出版社,2008.4:311-363
[5]朱喜福.Java程序设计[M].北京:人民邮电出版社,2005.9179-203
附录
(1)Xiaoril.java文件部分代码:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class Xiaorili extends JApplet {
//==================================================
/*定义全局变量*/   
    public static final Color background = Color.white;//背景
    public static final Color foreground = Color.black;//前景
    public static final Color headerBackground = Color.DARK_GRAY;//星期

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。