此日历控件在www.eltima.com上给的Swing library4.0的jar包里提出出来 并重新封装在DatePicker类中 将必要的函数由私有状态提升为公开状态.
下在地址:http://download.csdn.net/source/1023826
DatePicker类继承自JComponent所以在实例化后可添加到任何容器中(JPanel,JFrame,JDialog等)
使用方法:
DatePicker datepick = new DatePicker(Component c,new Date());//c为此组件所许要放置的父容器 d 初始化指定日期
// DatePicker datepick = new DatePicker(Component c);//无初始化日期
datepick.setLocale(Locale.US);//设置显示语言
datepick.setPattern("MM/dd/yyyy");//设置日期格式化字符串
datepick.setEditorable(false);//设置是否可编辑
datepick.setBackground(Color.gray);//设置背景色
datepick.setForeground(Color.yellow);//设置前景色
datepick.setPreferredSize(new Dimension(100,21));//设置大小
datepick.setTextAlign(DatePicker.CENTER);//设置文本水平方向位置:DatePicker.CENTER 水平居中,DatePicker.LEFT 水平靠左 DatePicker.RIGHT 水平靠右
效果:


使用datepick.getText()获得文本域的值
修改了这个控件的一些bug.
1. setLocale方法建议不要使用,在当前日期为null的情况下 日历不会默认为当天
2. 默认格式化格式为:"MM/dd/yyyy"
3. 默认环境为:Locale.US
4. 无日期初始化的时候日历默认为当前

5. 公开timepanel控制函数
datepick1.setTimePanleVisible(true);

6.去除在文本框中直接编辑时自动弹出日期选择窗口,在允许手动编辑改文本框的情况下,错误处理如下

错误对话框是否显示控制:
setShowerrormsg(Boolean flag)
错误消息设置:
setErrormsg(String errormsg);默认为:"InValid Date!\nPattern:(" + pattern + ")";
public void setCalendarVisible(boolean flag)//设置日期选择面板显示或隐藏
public void setDisableddays(int[] days)//设置不可选择日历数组
datepick1.setDisableddays(new int[]{1,2,3,4,5,5} );//设置每个月的1,2,3,4,5,6号日期不可选

public void setHightlightdays(int[] days, Color color)//根据指定的颜色高亮显示指定的日期
datepick1.setHightlightdays(new int[]{1,2,3,4,5,5} , Color.red);

可以使用addFocusLostListener(FocusLostListener f)添加焦点失去监听
addfocusInListener(FocusGainedListener f) 添加焦点获取监听
simple example:
发表于 @ 2009年02月19日 13:14:00 | 评论( loading... ) | 举报| 收藏