Java课程设计报告(广厦)_第1页
Java课程设计报告(广厦)_第2页
Java课程设计报告(广厦)_第3页
Java课程设计报告(广厦)_第4页
Java课程设计报告(广厦)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论