版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JavaJava 程序设计程序设计 课程设计报告课程设计报告 班级:班级:_10 计软本计软本_ 姓名:姓名:_曲冬雪曲冬雪_ 学号:学号:_ _ 日期:日期: 2011-12-15 广厦学院 目目 录录 1.设计内容设计内容.1 2.概要设计概要设计.1 3.自定义类及接口说明自定义类及接口说明.1 4.程序源码程序源码.2 5.程序运行与调试程序运行与调试.6 6.总结总结.7 7.参考文献参考文献.7 标题:(样式选择标题 1,段前端后 10 磅,三号字体,1.5 倍行距) 正文:(小四字体,1.5 倍行距) 参考文献(5 号字体,1.5 倍行距) 、设计内容、设计内容 通过编写一个基于
2、 JAVA 的应用系统综合实例,自定义一个日历组件显示日期 和时间并进行适当的功能扩充,实践 Java 语言编程技术。 2、概要设计、概要设计 设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提 示信息。在设计中应用了多种容器和控件。 3、自定义类及接口说明、自定义类及接口说明 (1)public void updateView()改变日期后完成更新界面; (2)抽象类 java.util.Calendar 获取系统日期并传递日期数据而且在人工改 变日期后得出当天是周几; (3)public static void main(String args) 主函数完成系统各算法的调用
3、并对主窗口的一些属性进行设置; 4、程序源码、程序源码 /* * (#) MyCalendar.java * author fancy */ /日历使用的类 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.a
4、wt.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.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swi
5、ng.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.ChangeListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellRender
6、er; 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_TUE = TUE; public static final String WEEK_WED = WED; public static final String WEEK_THU = THU;
7、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 final Color headerBackground = Color.blue; public static final Color headerForeground = Color.w
8、hite; public static final Color selectedBackground = Color.blue; public static final Color selectedForeground = Color.white; private JPanel cPane; private JLabel yearsLabel; private JSpinner yearsSpinner; private JLabel monthsLabel; private JComboBox monthsComboBox; private JTable daysTable; private
9、 AbstractTableModel daysModel; private Calendar calendar; private JButton button1; public MyCalendar() cPane = (JPanel) getContentPane(); public void init() cPane.setLayout(new BorderLayout(); calendar = Calendar.getInstance(); calendar = Calendar.getInstance(); JButton button1=new JButton( 单击此处 查看时
10、间 ); 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=new RollbyJFrame(); JOptionPane.showMessageDialog(null, 您点击了 +e.getActionCommand().toString()+按钮);
11、 ); yearsLabel = new JLabel(Year: ); yearsSpinner = new JSpinner(); yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, 0000); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); yearsSpinner.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent changeEven
12、t) 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(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day maxDay ? maxDay : day); updateVie
13、w(); ); JPanel yearMonthPanel = new JPanel(); cPane.add(yearMonthPanel, BorderLayout.NORTH); yearMonthPanel.setLayout(new BorderLayout(); yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); JPanel yearPanel = new JPanel(); yearMonthPanel.add(yearPanel, BorderLayout.WEST); yearPanel.setLayout(new
14、BorderLayout(); yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER); monthsLabel = new JLabel(Month: ); monthsComboBox = new JComboBox(); for (int i = 1; i maxDay ? maxDay : day); updateView(); ); JPanel monthPanel = new JPanel(); yearMonthPanel.add(monthPa
15、nel, BorderLayout.EAST); monthPanel.setLayout(new BorderLayout(); monthPanel.add(monthsLabel, BorderLayout.WEST); monthPanel.add(monthsComboBox, BorderLayout.CENTER); daysModel = new AbstractTableModel() public int getRowCount() return 9; public int getColumnCount() return 7; public Object getValueA
16、t(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.getActualMaximum(Calendar.DAY_OF_MONTH); int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1; int
17、 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); daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); days
18、Table.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.
19、setOpaque(true); if (row = 0) cell.setForeground(headerForeground); cell.setBackground(headerBackground); else if (isSelected) cell.setForeground(selectedForeground); cell.setBackground(selectedBackground); else cell.setForeground(foreground); cell.setBackground(background); return cell; ); updateVi
20、ew(); 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; case 4: return WEEK_THU; case 5: return WEEK_FRI; case 6: return WEEK_SAT; default: return nul
21、l; public void updateView() daysModel.fireTableDataChanged(); daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH), calendar.get(Calendar.WEEK_OF_MONTH); daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEE K) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1); public st
22、atic class CalendarTable extends JTable private Calendar calendar; public CalendarTable(TableModel model, Calendar calendar) super(model); this.calendar = calendar; public void changeSelection(int row, int column, boolean toggle, boolean extend) super.changeSelection(row, column, toggle, extend); if
23、 (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(简易时间日历); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyCalendar myCalendar = new MyCalendar
24、(); myCalendar.init(); frame.getContentPane().add(myCalendar); frame.setLocation(330,80); frame.setSize(360, 212); frame.setVisible(true); /滚动字 public static class RollbyJFrame extends JFrame implements ActionListener, FocusListener, javax.swing.event.ChangeListener private JTextField text; private
25、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=getContentPane(); JButton button=new JButton(修改速度); this.add(button,East); button.addActionLis
26、tener(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(Calendar.DAY_OF_MONTH); text = new JTextField( Hello 当前时间是: +hour+:+minute+ +year+/+month+/+da
27、y); 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.addChangeListene
28、r(this); this.setVisible(true); public void focusGained(FocusEvent e) /获得焦 点时 if (e.getSource()=text) timer.stop(); public void focusLost(FocusEvent e) /失去焦 点时 if (e.getSource()=text) timer.restart(); public void stateChanged(ChangeEvent e) if (e.getSource()=spinner) timer.setDelay(new Integer(+spinner.getValue(); /设置延时的时间间隔 public void actionPerformed(ActionEvent e) /定时器 定时执行事件 if (e.getSource()=button); else String temp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年齐齐哈尔市昂昂溪区社区工作者招聘笔试备考试题及答案详解
- 初中二年级《道德与法治》学科高阶思维方法整合指导教案
- 小学数学六年级下册《正比例的意义》创新教学设计
- 小学六年级数学《分数乘法解决问题》单元整体教学设计
- 小学道德与法治一年级下册《成长的足迹》单元整体教学设计
- 罗勒行业市场运行分析及品牌国际化与品质监管研究
- 人教版二年级数学上册《乘加乘减》运算律探究教案
- 幼儿园中班音乐教育:幼儿音乐欣赏能力系统性培养知识清单
- 2026年临沂市兰山区网格员招聘考试备考题库及答案详解
- 2026年丽江地区古城区社区工作者招聘考试模拟试题及答案详解
- 2026年中小学生安全知识竞赛试题(附答案)
- 2026年安全管理人员安全培训考试题附答案
- 2026年人教版七年级下册政治期末综合测评卷(含答案可下载)
- 2026年全国新高考1卷英语试卷(含答案及详解)
- (2026版)学校保密安全管理制度
- 市场监督管理局特种设备安全监察工作手册(标准版)
- 高中数学必修一2.2基本不等式常见题型(含答案)
- 2026年贵州省六盘水市初二地生会考试卷题库及答案
- 20kV及以下配电网工程预算定额(2022版)全5册excel版
- 城镇污水处理厂资产管理方案
- 卖身合同范例
评论
0/150
提交评论