一个java兑现的简单日历,采用左树右列表的方式实现,具有参考意义
一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
在论坛里面看到的,觉得挺好,具有参考价值。
直接将两个文件放在一起就可以运行。
本文来自****博客,转载请标明出处:http://blog.****.net/fenglibing/archive/2007/12/22/1958478.aspx
在论坛里面看到的,觉得挺好,具有参考价值。
直接将两个文件放在一起就可以运行。
/* File CalendarBean.java * author:*** * Date:2007-12-8 23:37 * 返回某年某月的日历的字符串数组 */ import java.util.Calendar; public class CalendarBean...{ int year = 2007,month = 0; private int monthDays[] = ...{31,28,31,30,31,30,31,31,30,31,30,31}; //设置年份 public void setYear(int year)...{ this.year = year; } //获取年份 public int getYear()...{ return year; } //设置月份 public void setMonth(int month)...{ this.month = month > 0 ? month : 1; } //获取月份 public int getMonth()...{ return month; } //判断是否为闰年 private static boolean isLeap(int year)...{ return ((year % 4 == 0) && (year %100 == 0)) || (year % 400 == 0); } //获得当前年月的日历所组成字符串数组 public String[][] getCalendar()...{ String data[][] = new String[6][7]; Calendar cale = Calendar.getInstance(); cale.set(year, month -1 ,1); //该月1号是星期几 int weekDay = cale.get(Calendar.DAY_OF_WEEK) - 1; //该月的天数 int day = monthDays[month - 1]; if(month == 2 && isLeap(year)) day = 29; int nextDay = 1; //添加字符串数组 for(int k = 0 ; k < 6; k++)...{ if( k == 0) for(int j = weekDay; j < 7;j++)...{ data[k][j] = " " + nextDay; nextDay++; } else for(int j = 0 ; j < 7 && nextDay <= day; j++)...{ data[k][j] = " " + nextDay; nextDay++; } } return data; } }
/* File CalenderFrame.java * author:*** * Date:2007-12-8 23:37 * 一个简单的日历 */ import javax.swing.*; import javax.swing.tree.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; public class CalenderFrame extends JFrame implements ItemListener, TreeSelectionListener...{ JTable table; JTree tree = null; DefaultMutableTreeNode root; Object name[] = ...{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; JComboBox yearList; CalendarBean cale; String rili[][]; String item[] = ...{"2006","2007","2008","2009","2010"}; JSplitPane split; int year = 2006; int month = 0; JScrollPane scrollTree,scrollTable; public CalenderFrame()...{ cale = new CalendarBean(); //添加年份列表 yearList = new JComboBox(); for(int k = 0 ; k < item.length;k++) yearList.addItem(item[k]); yearList.addItemListener(this); //添加月份树 root = new DefaultMutableTreeNode(item[0]); tree = new JTree(root); add(new JScrollPane(tree) , BorderLayout.WEST); tree.addTreeSelectionListener(this); //设置年月及该月日历 cale.setYear(year); cale.setMonth(month); rili = cale.getCalendar(); table = new JTable(rili,name); //添加到窗口 scrollTree = new JScrollPane(tree); scrollTable = new JScrollPane(table); split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollTree,scrollTable); add(yearList,BorderLayout.NORTH); add(split , BorderLayout.CENTER); updateYear(year); //设置窗口属性 setSize(580,350); setVisible(true); split.setDividerLocation(0.5); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //更新年份及月份树 private void updateYear(int year)...{ cale.setYear(year); root = new DefaultMutableTreeNode(String.valueOf(year)); DefaultMutableTreeNode months[] = new DefaultMutableTreeNode[13]; for(int i = 0 ; i <12;i++)...{ months[i] = new DefaultMutableTreeNode("" + (i+1)); root.add(months[i]); } split.remove(scrollTree); tree = new JTree(root); tree.addTreeSelectionListener(this); scrollTree = new JScrollPane(tree); split.add(scrollTree , JSplitPane.LEFT); split.setDividerLocation(0.5); validate(); } //年份列表的监听器 public void itemStateChanged(ItemEvent e)...{ String yearStr = yearList.getSelectedItem().toString().trim(); int year = Integer.parseInt(yearStr); updateYear(year); } //树结点的监听器 public void valueChanged(TreeSelectionEvent e)...{ DefaultMutableTreeNode monthNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if(monthNode.isLeaf())...{ month = Integer.parseInt(monthNode.toString().trim()); cale.setMonth(month); rili = cale.getCalendar(); split.remove(scrollTable); table = new JTable(rili,name); scrollTable = new JScrollPane(table); split.add(scrollTable, JSplitPane.RIGHT); split.setDividerLocation(0.5); validate(); System.out.println("validate ok"); } } public static void main(String args[])...{ new CalenderFrame(); } }
本文来自****博客,转载请标明出处:http://blog.****.net/fenglibing/archive/2007/12/22/1958478.aspx