ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:206.93KB ,
资源ID:28920703      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28920703.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java小日历 课程设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java小日历 课程设计报告.docx

1、Java小日历 课程设计报告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运行时系统

2、在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。本课程设计是一个JAVA小日历组件的设计,利用Fra

3、me框架类、面板类进行图形化界面设计,实现小日历的公历显示等功能。2.设计方案论证2.1设计思路本程序的要求为:.使用图形用户界面;.本程序能够实现日期与星期的查询。在设计小日历中的重要内容如下java Calendar方法:Calendar 抽象类定义了足够的方法,让我们能够表述日历的规则。我们也可以自己的 Calendar 实现类,然后将它作为 Calendar 对象返回(面向对象的特性)。在 Calendar 的方法中,get() 和 add() 会让 Calendar 立刻刷新。本程序的中心设计即是利用Calendar类来实现。javax swing JSpinner用法:让用户从一个

4、有序序列中选择一个数字或者一个对象值的单行输入字段。它能够方便地选择日期、数字或列表中的选项。Spinner 通常提供一对带小箭头的按钮以便逐步遍历序列元素。键盘的向上/向下方向键也可循环遍历元素。也允许用户在Spinner 中直接输入合法值。JSpinner显示不同的内容,采用不同的模型,像SpinnerDateModel,SpinnerListModel,SpinnerNumberModel,只要对模型修改,就可以实现想要的精确的功能。本程序利用该组件实现了年份的修改。setOpaque 用法:setOpaque (false)的作用是将button的背景色改为其parent的背景色。如果

5、为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制其某些或所有像素,从而允许其下面的像素透视出来。 基于Java Swing的超链接标签和超链接按钮的实现:java.awt.Desktop类的java.awt.Desktop.isDesktopSupported()可以获取当前系统是否支持java awt桌面扩展.如果支持可以获取当前系统的Desktop,则使用:java.awt.Desktop dp = java.awt.Desktop.getDesktop();dp.browse(.URI); 就可以启动系统默认的浏览器。本程序自定义一个超链接标签控件LinkLabel类进

6、行实现该功能。java中实现表格的多表头显示:主要就是三个应用类ColumnGroup, GroupableTableHeader,GroupableTableHeaderU和一个示例类GroupableHeaderExample。(1)本小日历设计主体结构设计一个框架MainFrame,然后在MainFrame里添加一个MainPanel面板。定义一个MainPanel面板类,该面板以边布局格式,所有其他面板、标签等均添加到所设定的面板中。(2) MainPanel面板北部(上方),添加一个年月面板YearMonthPanel该年月面板主要放年份显示、月份显示、标题显示。YearMonthP

7、anel面板也使用边布局格式,西部添加一个年份面板,放年份信息;中部添加一个TextPanel面板,放标题文本显示信息;东部添加一个月份面板MonthPanel,放月份下拉框信息。(3)MainPanel主面板的中部添加添加一个DaysPanel面板用于放置月份的天数表格信息。(4)MainPanel主面板的南部(下方)添加添加一个InfoPanel面板,主要用于放置显示个人信息。(5)InfoPanel面板上设计添加一个超级链接标签该链接可以链接到个人空间2.2设计方法(1)流程图设计图1 流程图(1)设计类及对象设计在本程序中:定义了一个Frame类,主要定义一个窗体框架,用于显示日历信息

8、,并在主函数中只创建一个该窗体对象实现程序功能。定义了一个主日历面板类Xiaorili,其中包含了日历设计所用到的全局变量、功能函数等,在Frame类里定义了其对象。在该日历面板类里又设计了一个内部类CalendarTable表格类,用于布局日历天的显示格式。为了设计一个超级链接,定义了一个LinkLable类,单独保存在一个文件LinkTbale.java中,在日历面板类Xiaorili里定义了其对象。(2)程序设计思路.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,

9、用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。.输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。.如果年份小于1582年则程序不予判断。3.设计结果与分析(1)运行程序,出现日历界面:图

10、2 主界面(2)单击年份的组合框侧边箭头,改变年份,则日历跟随改变:图3 改变年份(3)单击月份下拉框,改变月份,则日历也跟随改变:图4 改变月份(4)鼠标移动到“访问志文工作室”标签上,则字体颜色变为绿色:图5 访问空间(5)鼠标单击超级链接标签,则调用默认浏览器打开了我的空间:图6 我的空间4.设计体会本次课程设计我决定做日历的设计。主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个小日历程序,由于其功能简单设计也相对较易,对于我的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。对于本程序的设计,首先考

11、虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程

12、思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。5.参考文献1耿祥义.Java大学实用教程M.北京:电子工业出版社,2008.5:1-2602曾令明.Java程序设计教程M.北京:北京邮电大学出版社,2007.8:34-1203宛延闿.实用Java程序设计教程M.北京:机械工业出版社,2006.4:234-2504叶核亚.Java程序设计实用教程(第2版)M.北京:电子工业出版社,2008.4:311-3635朱喜福.Java程序设计M.北京:人民邮电出版社,2005.9:179-2

13、03附录(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 fore

14、ground = Color.black;/前景色 public static final Color headerBackground = Color.DARK_GRAY;/星期 public static final Color headerForeground = Color.white;/星期前景色 public static final Color selectedBackground = Color.green;/选中背景色 public static final Color selectedForeground = Color.white;/选中前景色 public static

15、 final String WeekSun = 星期日; /星期标签名称 public static final String WeekMon = 星期一; public static final String WeekTue = 星期二; public static final String WeekWed = 星期三; public static final String WeekThu = 星期四; public static final String WeekFri = 星期五; public static final String WeekSat = 星期六; private JPa

16、nel MainPanel;/日历面板 private JLabel yearsLabel;/“年份”标签 private JSpinner yearsSpinner;/年份组合框 private JLabel monthsLabel;/“月份”标签 private JComboBox monthsComboBox; /12月份下拉框 private JLabel textLabel;/标题显示标签 private JLabel InfoLabel;/个人信息显示标签 private JTable daysTable; /日表格 private AbstractTableModel daysM

17、odel;/天单元表格 private Calendar calendar;/日历对象/=/*函数定义*/ public Xiaorili() /构造函数 MainPanel = (JPanel) getContentPane(); public void init() /初始化面板界面函数 MainPanel.setLayout(new BorderLayout(); calendar = Calendar.getInstance();/默认方式,以本地的时区和地区来构造Calendar/- yearsLabel = new JLabel(年份: ); /设置年份标签显示 yearsSpin

18、ner = new JSpinner();/构造年份spinner组合框 yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, 0000); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); yearsSpinner.addChangeListener(new ChangeListener() /注册该组合框的事件监听器 public void stateChanged(ChangeEvent changeEvent) int day = cale

19、ndar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.YEAR, (Integer) yearsSpinner.getValue().intValue(); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day maxDay ? maxDay : day); updateView();/更新显示 );/- JP

20、anel yearMonthPanel = new JPanel();/定义年月面板 MainPanel.add(yearMonthPanel, BorderLayout.NORTH);/添加年月面板到日历面板的南面(最上方) yearMonthPanel.setLayout(new BorderLayout();/边布局模式 JPanel yearPanel = new JPanel();/构建年份面板 yearMonthPanel.add(yearPanel, BorderLayout.WEST);/年份面板添加到年月面板西部(左边) yearPanel.setLayout(new Bor

21、derLayout();/设置年份面板为边布局并添加年份标签和组合框 yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER);/- monthsLabel = new JLabel(月份: ); /设置月份标签显示 monthsComboBox = new JComboBox();/月份下拉框 for (int i = 1; i maxDay ? maxDay : day); updateView();/更新面板显示 ); /- JPanel monthPane

22、l = new JPanel();/定义月份面板 yearMonthPanel.add(monthPanel, BorderLayout.EAST);/添加月份面板到年月面板的东面(右面) monthPanel.setLayout(new BorderLayout();/月份面板设为边布局方式 monthPanel.add(monthsLabel, BorderLayout.WEST);/添加月份名称标签到月份面板西面(左面) monthPanel.add(monthsComboBox, BorderLayout.CENTER);/添加月份下拉框到月份面板中间/- textLabel = ne

23、w JLabel(JAVA小日历); /设置标题标签显示 JPanel txetPanel = new JPanel();/定义标题文本显示面板 yearMonthPanel.add(txetPanel,BorderLayout.CENTER);/添加标题文本显示面板到年月面板中间 txetPanel.add(textLabel,BorderLayout.CENTER);/添加标题文本标签到面板/- InfoLabel = new JLabel(学号:f0983107 姓名:麻红丽 班级:09计专升本); /设置个人信息标签显示 JPanel InfoPanel = new JPanel();

24、/定义底部个人信息显示面板 MainPanel.add(InfoPanel,BorderLayout.SOUTH);/添加个人信息显示面板到日历面板南方(下方) InfoPanel.add(InfoLabel);/添加信息标签文本标签到面板/- JPanel Link = new JPanel();/设置超级链接到我的空间 InfoPanel.add(new LinkLabel(访问我的空间, /- daysModel = new AbstractTableModel() /设置7行7列 public int getRowCount() return 7; public int getColu

25、mnCount() return 7; public Object getValueAt(int row, int column) if (row = 0) /第一行显示星期 return getHeader(column); row-; Calendar calendar = (Calendar) Xiaorili.this.calendar.clone(); calendar.set(Calendar.DAY_OF_MONTH, 1); int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int moreDayC

26、ount = calendar.get(Calendar.DAY_OF_WEEK) - 1; int index = row * 7 + column; int dayIndex = index - moreDayCount + 1; if (index dayCount) return null; else return new Integer(dayIndex); ; daysTable = new CalendarTable(daysModel, calendar); /构造日表格 daysTable.setCellSelectionEnabled(true);/设置表格单元格可选择 d

27、aysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) String text = (value = null) ? : value.toString(); JLabel cell = new JLabel(text); cell.setOpaque(true); /绘制边界内的所有像素 if (row = 0) /第一行显示星期,设置为星期的前景色和背景色 cell.setForeground(headerForeground); cell.setBackground(headerBackground); else if (isSelected)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1