




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 课程设计报告 信101 董兆军 2010314120java课程设计报告题 目 : JAVA简易时间日历程序学生姓名 : 董兆军 学 号 :2010314120 专业班级 : 信101 指导教师 : 李红强 课程设计题目 题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。系统设计1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。 2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个
2、框架类显示时间和提示信息。在设计中应用了多种容器和控件。系统模块划分public static class CalendarTable(日历类)public static void main(String args)public static class RollbyJFrame(滚动时间类)public class MyCalendar extends JApplet(主日历框架类)图1:简易日历的程序结构图初始化: public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。 日历描述: (1)public void updateView()改变日期后完成更新
3、界面; (2)抽象类java.util.Calendar获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几; (3)public static void main(String args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置; 滚动时间: 将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。4. 使用类及接口仅仅简单说明类的功能,详细资料请参看 JavaTM2Platform StandardEd. 6的电子文档,常规的接口与包则省略不屑。/以下是日历程序块中使用的类package fancy; import java.awt.*; import java.a
4、wt.event.*; import java.util.*; /主要用此包中的日期和时间类import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;/以下是对滚动时间程序块所使用的类和接口,用到定时器类Timerimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.Foc
5、usListener;、/用于监听鼠标单击(焦点改变)事件import java.awt.event.FocusEvent;/用于响应鼠标单击(焦点改变)事件、import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JSpinner;/让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。import javax.swing.JPanel;import javax.swing.Timer;/在指定时间间隔触发一个或多个 ActionEvent, 创建一个 Timer 对象,在该对象上注册一个
6、或多个动作侦听器,以及使用 start 方法启动该计时器。并配合事件监听器支持时间的滚动播放。import javax.swing.event.ChangeListener;import javax.swing.event.ChangeEvent;5. 运行结果与分析图2:初始界面显示日历。图3:点击查看时间按钮, 弹出时间消息对话框。图4:滚动显示当前时间。程序源代码MyCalendar.java import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Conta
7、iner;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.util.Calendar;import javax.swing.JApplet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.
8、JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JSpinner;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.Timer;import javax.swing.event.ChangeEvent;import javax.swing.event.C
9、hangeListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableModel;/日历 public class MyCalendar extends JApplet public static final String WEEK_SUN = SUN; public static final String WEEK_MON = MON; public static final String WEEK_T
10、UE = TUE; public static final String WEEK_WED = WED; public static final String WEEK_THU = THU; public static final String WEEK_FRI = FRI; public static final String WEEK_SAT = SAT; public static final Color background = Color.yellow; public static final Color foreground = Color.black; public static
11、 final Color headerBackground = Color.blue; public static final Color headerForeground = Color.white; public static final Color selectedBackground = Color.blue; public static final Color selectedForeground = Color.white; private JPanel cPane; private JLabel yearsLabel; private JSpinner yearsSpinner;
12、 private JLabel monthsLabel; private JComboBox monthsComboBox; private JTable daysTable; private AbstractTableModel daysModel; private Calendar calendar; private JButton button1; public MyCalendar() cPane = (JPanel) getContentPane(); public void init() cPane.setLayout(new BorderLayout(); calendar =
13、Calendar.getInstance(); calendar = Calendar.getInstance(); JButton button1=new JButton( 单击此处 查看时间 ); button1.setBounds(10,10,10,10); cPane.add(button1,BorderLayout.SOUTH); button1.addActionListener( new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) RollbyJFrame myrili=ne
14、w RollbyJFrame(); JOptionPane.showMessageDialog(null, 您点击了+e.getActionCommand().toString()+按钮); ); yearsLabel = new JLabel(Year: ); yearsSpinner = new JSpinner(); yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, 0000); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); year
15、sSpinner.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent changeEvent) int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.YEAR, (Integer) yearsSpinner.getValue().intValue(); int maxDay = calendar.getActualMaximum(Ca
16、lendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day maxDay ? maxDay : day); updateView(); ); JPanel yearMonthPanel = new JPanel(); cPane.add(yearMonthPanel, BorderLayout.NORTH); yearMonthPanel.setLayout(new BorderLayout(); yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); JPanel yearP
17、anel = new JPanel(); yearMonthPanel.add(yearPanel, BorderLayout.WEST); yearPanel.setLayout(new BorderLayout(); yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER); monthsLabel = new JLabel(Month: ); monthsComboBox = new JComboBox(); for (int i = 1; i maxDay
18、 ? maxDay : day); updateView(); ); JPanel monthPanel = new JPanel(); yearMonthPanel.add(monthPanel, BorderLayout.EAST); monthPanel.setLayout(new BorderLayout(); monthPanel.add(monthsLabel, BorderLayout.WEST); monthPanel.add(monthsComboBox, BorderLayout.CENTER); daysModel = new AbstractTableModel() p
19、ublic int getRowCount() return 9; public int getColumnCount() return 7; public Object getValueAt(int row, int column) if (row = 0) return getHeader(column); row-; Calendar calendar = (Calendar) MyCalendar.this.calendar.clone(); calendar.set(Calendar.DAY_OF_MONTH, 1); int dayCount = calendar.getActua
20、lMaximum(Calendar.DAY_OF_MONTH); int moreDayCount = 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.setCe
21、llSelectionEnabled(true); daysTable.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 c
22、olumn) 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) cell.setForeground(selectedForeground); cell.setBackground(selectedBackground)
23、; else cell.setForeground(foreground); cell.setBackground(background); return cell; ); updateView(); cPane.add(daysTable, BorderLayout.CENTER); public static String getHeader(int index) switch (index) case 0: return WEEK_SUN; case 1: return WEEK_MON; case 2: return WEEK_TUE; case 3: return WEEK_WED;
24、 case 4: return WEEK_THU; case 5: return WEEK_FRI; case 6: return WEEK_SAT; default: return null; public void updateView() daysModel.fireTableDataChanged(); daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH), calendar.get(Calendar.WEEK_OF_MONTH); daysTable.setColumnSelectionInter
25、val(calendar.get(Calendar.DAY_OF_WEEK) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1); public static class CalendarTable extends JTable private Calendar calendar; public CalendarTable(TableModel model, Calendar calendar) super(model); this.calendar = calendar; public void changeSelection(int row, int
26、column, boolean toggle, boolean extend) super.changeSelection(row, column, toggle, extend); if (row = 0) return; Object obj = getValueAt(row, column); if (obj != null) calendar.set(Calendar.DAY_OF_MONTH, (Integer)obj).intValue(); public static void main(String args) JFrame frame = new JFrame(简易时间日历)
27、; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyCalendar myCalendar = new MyCalendar(); myCalendar.init(); frame.getContentPane().add(myCalendar); frame.setLocation(330,80); frame.setSize(360, 212); frame.setVisible(true); /滚动字public static class RollbyJFrame extends JFrame implements Acti
28、onListener, FocusListener, javax.swing.event.ChangeListener private JTextField text; private JSpinner spinner; private Timer timer; private JButton button; public RollbyJFrame() super(滚动时间); this.setSize(360,100); this.setBackground(java.awt.Color.lightGray); this.setLocation(700,120); Container c=g
29、etContentPane(); JButton button=new JButton(修改速度); this.add(button,East); button.addActionListener(this); Calendar now = Calendar.getInstance();int hour=now.get(Calendar.HOUR);int minute=now.get(Calendar.MINUTE);int year=now.get(Calendar.YEAR);int month=now.get(Calendar.MONTH);int day=now.get(Calend
30、ar.DAY_OF_MONTH); text = new JTextField( Hello 当前时间是: +hour+:+minute+ +year+/+month+/+day); this.add(text,Center); text.addFocusListener(this); /注册焦点事件监听器 timer = new Timer(136,this); timer.start(); JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT); this.add(panel,South); spinner = new JSpinner(); spinner.setValue(timer.getDelay(); panel.add(spinner); spinner.addChangeListener(this); this.setVisible(true); public void focusGained(FocusEvent e) /获得焦点时 if (e.getSou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级英语口语能力测试模拟题集
- 2025年酶法生产海藻糖项目发展计划
- 2025-2026学年北师大版(2024)小学数学三年级上册《看一看(三)》教学设计
- 2025年高纯砷及氧化砷项目发展计划
- 抗菌药物处方授权课件
- 河北省石家庄第二十八中学2024-2025学年上学期九年级期中考数学试题(含答案)
- 抗消化性溃疡药的课件
- 2025年羟丙基甲基纤维素合作协议书
- 解剖题库及答案人卫
- 管理学试题库及答案
- 涉密文件日常管理办法
- 微信社交礼仪见面扫一扫时代25课件
- 药品批发企业《药品经营质量管理规范》
- 北京市律师协会律师办理法律尽职调查业务操作指引
- 教育测量与评价 课件全套 朱德全 第1-15章 教育测量与评价概述- 教育测评结果的统计处理
- 法院送达地址确认书
- GA/T 1968-2021法医学死亡原因分类及其鉴定指南
- 施工现场用水量计算
- 材料验收手册
- 油罐底板焊缝抽真空试验记录表格
- 球的表面积与体积课件
评论
0/150
提交评论