Java日历组件

本文介绍了一款基于Java Swing的自定义日历组件的开发细节,该组件支持日期选择及事件监听等功能,适用于桌面应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:http://www.cnitblog.com/addone/archive/2006/04/01/8457.html
基本功能
可以选择日期,直接选择当天;
支持在改变日期时以及选择日期后的简单事件处理。
编程接口
组件使用Eclipse3.1.1+JDK5.0开发并测试通过。
所有类放在包:addone.publics.gui.calendar中:
  • WeekDay类:操作周日的Enum
  • CalendarColors类:定义了日历的外观颜色常数
  • CellSelectionListener类:选中表格单元格后的侦听器
  • CellChangeListener类:表格单元格改变后的侦听器
  • CalendarSelectionListener类:在日历中选中日期后的侦听器
  • CellChangeListener类:日历日期改变后的侦听器
  • CalendarTable类:日历表格,封装了表格操作方法,继承自JTable
  • CalendarPanel类:日历面板,封装了大部分的组件操作方法,继承自JPanel
基本用法(CalendarPanel类):

CalendarPanel():构造一个以星期天为每周的第一天的日历
CalendarPanel(WeekDay):构造一个以WeekDay为每周的第一天的日历
WeekDay getStartWeekDay():返回当前日历每周的第一天
Calendar getCalendar():返回组件内部当前的Calendar对象
void setCalendar(Calendar calendar):重新设置组件内部的calendar对象,并刷新日历
void setToday():日历跳转到当前日期,同时刷新日历
void setCalendarChangeListener(CalendarChangeListener listener):设置日历日期改变时的侦听器,当改变年份或月份时,以及选中日期但尚未跳转时触发
void setCalendarSelectionListener(CalendarSelectionListener listener):设置日历日期选中时的侦听器,当直接在日历中选中日期并跳转后,或者直接回到今天时触发

如果需要改变日历的外观颜色,直接修改CalendarColors类中的颜色常数即可。

简单示例

以下代码创建了一个Frame,其中放置了一个日历组件,日历设置为以星期一为每周的第一天。

public class CalendarFrame extends JFrame {
private CalendarPanel myCalendar;
public CalendarFrame() {
         initCalendar();
         initFrame();
         pack();
     }
private void initCalendar() {
         myCalendar = new CalendarPanel(WeekDay.MONDAY);
         myCalendar.setCalendarSelectionListener(new CalendarSelectionListener() {
public void calendarSelected(Calendar currentCalendar) {
                 System.out.println(currentCalendar.get(Calendar.YEAR)+"-"
+(currentCalendar.get(Calendar.MONTH)+1)+"-"
+currentCalendar.get(Calendar.DATE));
             };
         });
         myCalendar.setCalendarChangeListener(new CalendarChangeListener() {
public void calendarChanged() {
                 System.out.println("Changing");
             };
         add(myCalendar);
     }
private void initFrame() {
         setTitle("日历");
         setSize(400, 172);
         setResizable(false);
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值