一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
来源:互联网 发布:换手机壁纸的软件 编辑:程序博客网 时间:2024/06/05 15:14
在论坛里面看到的,觉得挺好,具有参考价值。
直接将两个文件放在一起就可以运行。
/**//* 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;
}
}
* 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();
}
}
* 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();
}
}
本文出自:冯立彬的博客
- 一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
- java实现的一个简单日历
- 实现一个简单的日历
- 采用Java nio 实现的一个简单的服务器
- 一个简单的日历的实现
- java 实现简单的日历查询
- java实现简单的日历功能
- 一个java的web日历实现
- java实现一个月的日历打印
- java实现的日历
- iSO简单的日历实现
- js实现简单的日历
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 自己实现一个简单的散列表
- 初识kotlin,实现一个简单的列表
- 微软预先展示"Server 2008"五大版本
- 汇编乐曲编程 两只老虎
- 解析SQL Server 2008 数据仓库
- javascript 工具类
- CRUD框架:Phpgrid
- 一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
- Java的困惑-1
- PB11新开发模式的深入学习计划:以及开发思路应转变到框架重用和面向对象
- 详细,列表!SQL Server 2005 功能比較 SQL Server 不同版本比较
- Mysql 的 phpmyadmin 安装过程中的一个错误
- Fineplus 1.31 (QQ完美助手)
- 五子棋范例程序
- waterfall model
- 今天四级考试!