java期末项目(日历)_第1页
java期末项目(日历)_第2页
java期末项目(日历)_第3页
java期末项目(日历)_第4页
java期末项目(日历)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

献给 Java 专业期末考试复习的同学 希望你们能考个好成绩 2011 Java 期末项目总结(大一下学期) 一项目名称 日历 二项目成员 罗曼 三关键技术(类) 1 面板的设计 2 标签、算法和线程 3 事件的处理 4 一些方法的使用 四总体界面 1,首页界面 五项目不足与缺陷 1,没有图片 ,2,没有连接和数据库 3.很单调 六心得体会 一项目前的准备 首先想好做什么,需要什么,用什么做,项目的作用和要实现的功能。 二项目中注意的问题 1.算法的准确 2.方法的使用 3.布局 七程序代码 /* * MyCalendar.java * author fancy */ package fancy; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; 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“; 3 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.white; public static final Color foreground = Color.black; public static final Color headerBackground = Color.pink; public static final Color headerForeground = Color.white; public static final Color selectedBackground = Color.pink; 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 AbstractTableModel daysModel; private Calendar calendar; public MyCalendar() cPane = (JPanel) getContentPane(); public void init() cPane.setLayout(new BorderLayout(); calendar = Calendar.getInstance(); calendar = Calendar.getInstance(); yearsLabel = new JLabel(“年: “); yearsSpinner = new JSpinner(); yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, “0000“); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); yearsSpinner.addChangeListener(new ChangeListener() 5 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(Calendar.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 yearPanel = new JPanel(); yearMonthPanel.add(yearPanel, BorderLayout.WEST); yearPanel.setLayout(new BorderLayout(); 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 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() public int getRowCount() return 7; 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 = 9 calendar.getActualMaximum(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.setCellSelectionEnabled(true); daysTable.setSelectionMode(ListSelectionModel.SIN GLE_SELECTION); daysTable.setDefaultRenderer(daysTable.getColumnC lass(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) cell.setForeground(selectedForeground); 11 cell.setBackground(selectedBackground); 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; 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(Ca lendar.WEEK_OF_MONTH), 13 calendar.get(Calendar.WEEK_OF_MONTH); daysTable.setColumnSelectionInterval(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 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论