帮帮忙呗,就是个这个万年历加个图形用户界面
效果跟系统的万年历差不多就好拉
public class WanNianLi {
int year;//查找的年份
int month;//查找的月份

//计算所需查找月份距离1990年一月的天数,得到所需查找月份的一号是礼拜几
static public void Days(int _year,int _month) {
int days=0;//所需查找月份距离1990年一月的总天数天数
int beforeDays=0;//所需查找年份距离1990年一月的天数
int monthDays=0;//所需查找月份当月的天数
int week=0;//所需查找月份的一号是礼拜几 //计算得到所需查找年份距离1990年一月的天数
switch((_year-1990)%4)
{
case 0:  {beforeDays=(_year-1990)/4*1461;break;}
case 1:  {beforeDays=(_year-1990)/4*1461+365;break;}
case 2:  {beforeDays=(_year-1990)/4*1461+730;break;}
case 3:  {beforeDays=(_year-1990)/4*1461+1096;break;}
} //计算得到所需查找月份距离1990年一月的天数与所需查找月份当月的天数
switch(_month)
{
case 1:  {days=0;monthDays=31;break;}
case 2:  {days=31;monthDays=28;break;}
case 3:  {days=31+28;monthDays=31;break;}
case 4:  {days=31+28+31;monthDays=30;break;}
case 5:  {days=31+28+31+30;monthDays=31;break;}
case 6:  {days=31+28+31+30+31;monthDays=30;break;}
case 7:  {days=31+28+31+30+31+30;monthDays=31;break;}
case 8:  {days=31+28+31+30+31+30+31;monthDays=31;break;}
case 9:  {days=31+28+31+30+31+30+31+31;monthDays=30;break;}
case 10: {days=31+28+31+30+31+30+31+31+30;monthDays=31;break;}
case 11: {days=31+28+31+30+31+30+31+31+30+31;monthDays=30;break;}
case 12: {days=31+28+31+30+31+30+31+31+30+31+30;monthDays=31;break;}
} //判断查找年份是否闰年
if((_year%4==0&&_year%100!=0)||(_year%400==0))
{
if(_month>2)days=days+1;//如果闰年且月份大于二月,总天数+1
if(_month==2)monthDays=monthDays+1;//如果闰年且月份等于二月,当月天数+1
}
days=days+beforeDays;//计算总天数
week=days%7;//计算所需查找月份的一号是礼拜几
getInfo(monthDays,week);//输出万年历
}

//输出万年历
static public void getInfo(int monthDays,int week) {
int a[]=new int[31];//月份的天数,初始化都有31天
int j=0;//判断换行(一周七天)

for(int i=0;i<31;i++) a[i]=i+1;//初始化月份
System.out.println("  日  一  二  三  四  五  六");

if(week!=6) for(j=0;j<=week;j++) System.out.print("    ");//如果所需查找月份的一号不是礼拜天,就空出空位
for(int k=0;k<monthDays;k++)//开始输出日期
{
if(k<9)
System.out.print("   "+a[k]);
else if(k<monthDays)
System.out.print("  "+a[k]);
j++;
if(j==7)
{
System.out.println("");
j=0;
}
}
}

public static void main(String x[]){
int year=2011,month=1;//-----------------这里是改变查找条件的地方!!!!
Days(year,month);
}
}[email protected]

解决方案 »

  1.   

    别老是伸手问人要代码。。  自己学习一下AWT 和 swing 也就花半个月左右时间就可以了
      

  2.   

    import javax.swing.*;import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    class MainFrame extends JFrame
    {
     private static final long serialVersionUID = 4395459176419007992L;
     
     JPanel panel=new JPanel(new BorderLayout());
        JPanel panel1=new JPanel();
        JPanel panel2=new JPanel(new GridLayout(7,7));
        JPanel panel3=new JPanel();
        JLabel []label=new JLabel[49];
        JLabel y_label=new JLabel("年份");
        JLabel m_label=new JLabel("月份");
        JComboBox com1=new JComboBox();
        JComboBox com2=new JComboBox();
        JButton button=new JButton("查看");
        JButton button2=new JButton("修改");
        Date today = new Date();
        JSpinner s = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MONTH));
        JSpinner.DateEditor de = new JSpinner.DateEditor(s, "yyyy'年'MM'月'dd'日'HH:mm:ss");
        int re_year,re_month;
        int x_size,y_size;
        String year_num;
        Calendar now=Calendar.getInstance();    //实例化Calendar
        MainFrame(){
            super("万年历");
            setSize(300,350);
            x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
            y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
            setLocation((x_size-300)/2,(y_size-350)/2);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            panel1.add(y_label);
            panel1.add(com1);
            panel1.add(m_label);
            panel1.add(com2);
            panel1.add(button);
            s.setEditor(de);
            s.setEnabled(true);
            panel3.add(s);
            panel3.add(button2);
            for(int i=0;i<49;i++){
                label[i]=new JLabel("",JLabel.CENTER);//将显示的字符设置为居中
                panel2.add(label[i]);
            }
            panel.add(panel1,BorderLayout.NORTH);
            panel.add(panel2,BorderLayout.CENTER);
            panel.add(panel3,BorderLayout.SOUTH);
            panel.setBackground(Color.white);
            panel1.setBackground(Color.white);
            panel2.setBackground(Color.white);
            panel3.setBackground(Color.WHITE);
            Init();
            button.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    int c_year,c_month,c_week;
                    c_year=Integer.parseInt(com1.getSelectedItem().toString());        //得到当前所选年份
                    c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;    //得到当前月份,并减1,计算机中的月为0-11
                    c_week=use(c_year,c_month);        //调用函数use,得到星期几
                    Resetday(c_week,c_year,c_month);        //调用函数Resetday
                }});
            setContentPane(panel);
            setVisible(true);
            setResizable(false);
        }
        public void Init(){
        int year,month_num,first_day_num;
        String log[]={"日","一","二","三","四","五","六"};
        for(int i=0;i<7;i++){
        label[i].setText(log[i]);
        }
        for(int i=0;i<49;i=i+7){
            label[i].setForeground(Color.red);    //将星期日的日期设置为红色
        }
        for(int i=6;i<49;i=i+7){
            label[i].setForeground(Color.green);//将星期六的日期设置为绿色
        }
        for(int i=1;i<10000;i++){
            com1.addItem(""+i);
        }
        for(int i=1;i<13;i++){
            com2.addItem(""+i);
        }
        month_num=(int)(now.get(Calendar.MONTH));    //得到当前时间的月份
        year=(int)(now.get(Calendar.YEAR));            //得到当前时间的年份
        com1.setSelectedIndex(year-1);                //设置下拉列表显示为当前年
        com2.setSelectedIndex(month_num);            //设置下拉列表显示为当前月
        first_day_num=use(year,month_num);
        Resetday(first_day_num,year,month_num);
        }
        public int use(int reyear,int remonth){
            int week_num;
            now.set(reyear,remonth,1);        //设置时间为所要查询的年月的第一天
            week_num= (int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
            return week_num;
        }
        public void Resetday(int week_log,int year_log,int month_log){
            int month_score_log;    //判断是否是闰年的标记
            int month_day_score;    //存储月份的天数
            int count;
            month_score_log=0;
            month_day_score=0;
            count=1;
            if(year_log%4==0&&year_log%100!=0||year_log%400==0){//判断是否为闰年
                month_score_log=1;
            }
        month_log=month_log+1;    //将传来的月份数加1
        switch(month_log){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
            month_day_score=31;
            break;
            case 4:
            case 6:
            case 9:
            case 11:
            month_day_score=30;
            break;
            case 2:
            if(month_score_log==1){
            month_day_score=29;    
            }
            else{
            month_day_score=28;
            }
            break;
            }
            for(int i=7;i<49;i++){        //初始化标签
                label[i].setText("");
            }
            week_log=week_log+6;        //将星期数加6,使显示正确
            month_day_score=month_day_score+week_log;
            for(int i=week_log;i<month_day_score;i++,count++){
                label[i].setText(count+"");
            }
        }
        public static void main(String [] args)
        {
            JFrame.setDefaultLookAndFeelDecorated(true);
            MainFrame start=new MainFrame();
        }    
    }
      

  3.   

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import javax.swing.border.*;
    import javax.swing.event.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;/**
     * 日期的选择控件,可以作为普通的组件使用,在构造函数中,必须传入一个该组件的所有者对象。 并且该对象只能是一个Frame对象或者一个JFrame对象。
     * 使用方法如下: JFrame frame2 = new JFrame();
     * frame2.getContentPane().setLayout(null); DateChooser date = new
     * DateChooser(frame2); frame2.getContentPane().add(date); frame2.setSize(500,
     * 400); frame2.setVisible(true); 组件的外观象一个combox,单击下拉按钮就可以对日期进行选择。 Title: 日期选择控件
     * Copyright: Copyright (c) 2006 Company: Xaccp Date:2006年6月17日
     * 
     * @author Tellixu(许天岭)
     * @version 1.0
     */
    public class DateChooser extends JPanel { private int width = 250; // 日期控件的宽度 private int height = 220; // 日期控件的高度 private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JTextField dateField = new JTextField(); private DateChooserButton btnChoose = new DateChooserButton("◥"); // ▼是指:▼下拉箭头的unicode码 private String parten; private Container owner; private int length = 120; public DateChooser(Container owner, int length) {
    this.owner = owner;
    this.parten = "yyyy-MM-dd HH:mm";
    this.length = length;
    try {
    init();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    } /**
     * 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。
     */
    public DateChooser(Container owner, String partten, int length) {
    this.owner = owner;
    this.parten = partten;
    this.length = length;
    try {
    init();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    } /**
     * 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。
     */
    public DateChooser(Container owner, String partten) {
    this.owner = owner;
    this.parten = partten;
    try {
    init();
    } catch (Exception ex) {
    ex.printStackTrace();
    } } /**
     * 以缺省的partten构建DateChooser对象 日期选择框的所有者必须是Frame或者是JFrame对象。
     */
    public DateChooser(Container owner) {
    this.owner = owner;
    this.parten = "yyyy-MM-dd";
    try {
    init();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    } /**
     * 系统初始化
     * 
     * @throws Exception
     */
    private void init() throws Exception {
    dateField.setToolTipText("单击右边的按钮即可选择日期");
    btnChoose.setToolTipText("单击即可选择日期");
    this.setLayout(gridBagLayout1);
    dateField.setEditable(false);
    btnChoose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    DateChooser.this.btnChoose_actionPerformed(e);
    }
    });
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(parten);
    this.setText(simpleDateFormat.format(date));
    this.add(dateField, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
    0, 0, 0, 0), this.length, 0));
    this.add(btnChoose, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
    0, 0, 0, 0), 0, 0));
    }

    public void setBtnChoose(boolean flag){
    this.btnChoose.setEnabled(flag);
    }
    public void setToolTipText(String text) {
    dateField.setToolTipText(text);
    btnChoose.setToolTipText(text);
    } /**
     * 下拉按钮的事件处理
     * 
     * @param e
     *            ActionEvent
     */
    public void btnChoose_actionPerformed(ActionEvent e) {
    java.awt.Rectangle r = dateField.getBounds();
    Point pOnScreen = dateField.getLocationOnScreen(); Point result = new Point(pOnScreen.x, pOnScreen.y + r.height);
    Point powner = owner.getLocation();
    int offsetX = (pOnScreen.x + width) - (powner.x + owner.getWidth());
    int offsetY = (pOnScreen.y + r.height + height)
    - (powner.y + owner.getHeight()); if (offsetX > 0) {
    result.x -= offsetX;
    } if (offsetY > 0) {
    result.y -= height + r.height;
    } javax.swing.JDialog dateFrame = new javax.swing.JDialog();
    dateFrame.setModal(false);
    dateFrame.setUndecorated(true);
    dateFrame.setLocation(result);
    dateFrame.setSize(width, height); dateFrame.addWindowListener(new WindowAdapter() {
    // 在任意的非日期选择区单击,则日期选择组件将变为非活动状态,自动释放资源。
    public void windowDeactivated(WindowEvent e) {
    javax.swing.JDialog f = (javax.swing.JDialog) e.getSource();
    f.dispose();
    }
    });
    DatePanel datePanel = new DatePanel(dateFrame, parten);
    dateFrame.getContentPane().setLayout(new BorderLayout());
    dateFrame.getContentPane().add(datePanel);
    dateFrame.setVisible(true);
    } /**
     * 得到日期控件中的值
     * 
     * @return String
     */
    public String getText() {
    return this.dateField.getText();
    } /**
     * 设置文本域的值
     * 
     * @param text
     *            String
     */
    public void setText(String text) {
    this.dateField.setText(text);
    } /**
     * 该方法非常有用,是外部直接访问的TextField对象。
     * 
     * @return JTextField
     */
    public JTextField getDateField() {
    return dateField;
    } /**
     * 内部类,日期选择控件的主体,封装了所有日期选择的内容,主要是一个Panel
     */
    class DatePanel extends JPanel implements MouseListener, ChangeListener { int startYear = 1970; // 默认【最小】显示年份 int lastYear = 2050; // 默认【最大】显示年份 Color backGroundColor = Color.gray; // 底色 // 月历表格配色----------------//
    Color palletTableColor = Color.white; // 日历表底色 Color weekFontColor = Color.blue; // 星期文字色 Color dateFontColor = Color.black; // 日期文字色 Color weekendFontColor = Color.red; // 周末文字色 Color moveButtonColor = Color.BLUE; // 鼠标移动的日历底色 Color todayBtnColor = Color.pink; // 今天的日历底色 // 控制条配色------------------//
    Color controlLineColor = Color.pink; // 控制条底色 Color controlTextColor = Color.white; // 控制条标签文字色 JSpinner yearSpin; JSpinner monthSpin; JSpinner hourSpin;

    JSpinner minuteSpin; JButton[][] daysButton = new JButton[6][7]; javax.swing.JDialog f; JPanel dayPanel = new JPanel(); // 日期panel JPanel yearPanel = new JPanel(); Calendar calendar = Calendar.getInstance(); String pattern; /**
     * 日期选择控件放在了非模态对话框中
     */
    public DatePanel(javax.swing.JDialog target, String pattern) {
    super(); this.f = target;
    this.pattern = pattern; setLayout(new BorderLayout());
    setBorder(new LineBorder(backGroundColor, 2));
    setBackground(backGroundColor);
    initButton(); // 初始化放置日期的按钮。
    createYearAndMonthPanal(); //
    this.flushWeekAndDayPanal(calendar); // 之前必须先保证放置日期的按钮已经初始化。
    this.setLayout(new BorderLayout());
    this.add(yearPanel, BorderLayout.NORTH);
    this.add(dayPanel, BorderLayout.CENTER);
    } /**
     * 日期选择控件的按钮初始化
     */
    private void initButton() {
    int actionCommandId = 1;
    for (int i = 0; i < 6; i++) {
    for (int j = 0; j < 7; j++) {
    JButton numberButton = new JButton();
    numberButton.setBorder(BorderFactory.createEmptyBorder());
    numberButton.setHorizontalAlignment(SwingConstants.CENTER);
    numberButton.setActionCommand(String
    .valueOf(actionCommandId)); numberButton.addMouseListener(this); numberButton.setBackground(palletTableColor);
    numberButton.setForeground(dateFontColor);
    numberButton.setText(String.valueOf(actionCommandId));
    numberButton.setPreferredSize(new Dimension(25, 25));
    daysButton[i][j] = numberButton;
    actionCommandId++;
    }
    }
    } private Date getNowDate() {
    return Calendar.getInstance().getTime();
    } private Calendar getNowCalendar() {
    Calendar result = Calendar.getInstance();
    return result;
    } private Date getSelectDate() {
    return calendar.getTime();
    }
      

  4.   

    上接上面吧部分 /**
     * 创建年月日的面板
     */
    private void createYearAndMonthPanal() {
    Calendar c = getNowCalendar();
    int currentYear = c.get(Calendar.YEAR);
    int currentMonth = c.get(Calendar.MONTH) + 1;
    int currentHour = c.get(Calendar.HOUR_OF_DAY);
    int cuurentMinute=c.get(Calendar.MINUTE);
    yearSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
    currentYear, startYear, lastYear, 1));
    monthSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
    currentMonth, 1, 12, 1));
    hourSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
    currentHour, 0, 23, 1));
    minuteSpin=new JSpinner(new javax.swing.SpinnerNumberModel(
    cuurentMinute, 0, 59, 1)); yearPanel.setLayout(new java.awt.FlowLayout());
    yearPanel.setBackground(controlLineColor); yearSpin.setPreferredSize(new Dimension(48, 20));
    yearSpin.setName("Year");
    yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
    yearSpin.addChangeListener(this);
    yearPanel.add(yearSpin); JLabel yearLabel = new JLabel("年");
    yearLabel.setForeground(controlTextColor);
    yearPanel.add(yearLabel); monthSpin.setPreferredSize(new Dimension(35, 20));
    monthSpin.setName("Month");
    monthSpin.addChangeListener(this);
    yearPanel.add(monthSpin); JLabel monthLabel = new JLabel("月");
    monthLabel.setForeground(controlTextColor);
    yearPanel.add(monthLabel); hourSpin.setPreferredSize(new Dimension(35, 20));
    hourSpin.setName("Hour");
    hourSpin.addChangeListener(this);
    yearPanel.add(hourSpin); JLabel hourLabel = new JLabel("时");
    hourLabel.setForeground(controlTextColor);
    yearPanel.add(hourLabel);


    minuteSpin.setPreferredSize(new Dimension(35, 20));
    minuteSpin.setName("Minute");
    minuteSpin.addChangeListener(this);
    yearPanel.add(minuteSpin);

    JLabel minuteLabel = new JLabel("分");
    minuteLabel.setForeground(controlTextColor);
    yearPanel.add(minuteLabel);

    } /**
     * 根据日期刷新显示面板
     */
    private void flushWeekAndDayPanal(Calendar c) {
    // c.set
    c.set(Calendar.DAY_OF_MONTH, 1);
    c.setFirstDayOfWeek(0);
    int firstdayofWeek = c.get(Calendar.DAY_OF_WEEK);
    int lastdayofWeek = c.getActualMaximum(Calendar.DAY_OF_MONTH);
    String colname[] = { "日", "一", "二", "三", "四", "五", "六" };
    int today = getNowCalendar().get(Calendar.DAY_OF_MONTH);
    // 设置固定字体,以免调用环境改变影响界面美观
    dayPanel.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
    dayPanel.setLayout(new GridBagLayout());
    dayPanel.setBackground(Color.white); JLabel cell; for (int i = 0; i < 7; i++) {
    cell = new JLabel(colname[i]);
    cell.setHorizontalAlignment(JLabel.CENTER);
    cell.setPreferredSize(new Dimension(25, 25));
    if (i == 0 || i == 6) {
    cell.setForeground(weekendFontColor);
    } else {
    cell.setForeground(weekFontColor);
    }
    dayPanel.add(cell, new GridBagConstraints(i, 0, 1, 1, 0.0, 0.0,
    GridBagConstraints.CENTER, GridBagConstraints.NONE,
    new Insets(0, 0, 0, 0), 0, 0));
    } int actionCommandId = 1;
    for (int i = 0; i < 6; i++) {
    for (int j = 0; j < 7; j++) { JButton numberButton = daysButton[i][j];
    actionCommandId = Integer.parseInt(numberButton
    .getActionCommand());
    if (actionCommandId == today) {
    numberButton.setBackground(todayBtnColor);
    }
    if ((actionCommandId + firstdayofWeek - 2) % 7 == 6
    || (actionCommandId + firstdayofWeek - 2) % 7 == 0) {
    numberButton.setForeground(weekendFontColor);
    } else {
    numberButton.setForeground(dateFontColor);
    } if (actionCommandId <= lastdayofWeek) {
    int y = 0;
    if ((firstdayofWeek - 1) <= (j + firstdayofWeek - 1) % 7) {
    y = i + 1;
    } else {
    y = i + 2;
    }
    dayPanel.add(numberButton, new GridBagConstraints((j
    + firstdayofWeek - 1) % 7, y, 1, 1, 0.0, 0.0,
    GridBagConstraints.CENTER,
    GridBagConstraints.NONE,
    new Insets(0, 0, 0, 0), 0, 0));
    }
    }
    }
    } private int getSelectedYear() {
    return ((Integer) yearSpin.getValue()).intValue();
    } private int getSelectedMonth() {
    return ((Integer) monthSpin.getValue()).intValue();
    } private int getSelectedHour() {
    return ((Integer) hourSpin.getValue()).intValue();
    }
            private int getSelectedMinute(){
             return ((Integer)minuteSpin.getValue()).intValue();
            }
            
    /**
     * 年月小时的事件处理
     * 
     * @param e
     *            ChangeEvent
     */
    public void stateChanged(ChangeEvent e) {
    JSpinner source = (JSpinner) e.getSource();
    if (source.getName().equals("Minute")) {
    calendar.set(Calendar.MINUTE, getSelectedMinute());
    return;
    }
    if (source.getName().equals("Hour")) {
    calendar.set(Calendar.HOUR_OF_DAY, getSelectedHour());
    return;
    }
    if (source.getName().equals("Year")) { calendar.set(Calendar.YEAR, getSelectedYear());
    dayPanel.removeAll();
    this.flushWeekAndDayPanal(calendar);
    dayPanel.revalidate();
    dayPanel.updateUI();
    return;
    }
    if (source.getName().equals("Month")) {
    calendar.set(Calendar.MONTH, getSelectedMonth() - 1); dayPanel.removeAll();
    this.flushWeekAndDayPanal(calendar);
    dayPanel.revalidate();
    dayPanel.updateUI();
    return;
    }
    } /**
     * 日期按钮的鼠标事件处理
     * 
     * @param e
     *            MouseEvent
     */
    public void mouseClicked(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1) {
    JButton source = (JButton) e.getSource(); String value = source.getText();
    int day = Integer.parseInt(value);
    calendar.set(Calendar.DAY_OF_MONTH, day);
    Date selectDate = this.getSelectDate();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
    pattern);
    DateChooser.this.setText(simpleDateFormat.format(selectDate)); int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1;
    // System.out.println(year + "年" + month + "月" + day + "日");
    f.dispose();
    }
    } public void mousePressed(MouseEvent e) {
    // 空实现接口中的方法,不能删除
    } public void mouseReleased(MouseEvent e) {
    // 空实现接口中的方法,不能删除
    } /**
     * 鼠标移动到日历中的事件
     * 
     * @param e
     *            MouseEvent
     */
    public void mouseEntered(MouseEvent e) {
    JButton jbutton = (JButton) e.getSource();
    jbutton.setBackground(moveButtonColor); } /**
     * 鼠标移出日历中的事件
     * 
     * @param e
     *            MouseEvent
     */
    public void mouseExited(MouseEvent e) {
    JButton jbutton = (JButton) e.getSource();
    int comm = Integer.parseInt(jbutton.getActionCommand());
    int today = getNowCalendar().get(Calendar.DAY_OF_MONTH);
    if (comm == today) {
    jbutton.setBackground(todayBtnColor);
    } else {
    jbutton.setBackground(palletTableColor);
    }
    }
    } /**
     * 内部类,改变按钮的边框不可编辑区,使外观更加协调。
     */
    class DateChooserButton extends JButton {
    public DateChooserButton(String text) {
    super(text);
    } public Insets getInsets() {
    return new Insets(4, 2, 0, 2);
    } }
    }
      

  5.   

    上面时间日历的测试import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.Toolkit;import javax.swing.JFrame;
    import javax.swing.JPanel;import org.caveness.frame.WorkerFrame.CloseHandler;
    import org.caveness.frame.timmer.DateChooser;public class TimmerTest extends JFrame{ private JPanel topPanel;

    public TimmerTest(){
    super();
    init();
    }
    public void init(){

    topPanel = new JPanel(new FlowLayout());
    DateChooser dateCho=new DateChooser(this,20);
    //dateCho.setBtnChoose(false);  //设置时间按钮是否可用
    topPanel.add(dateCho);

    this.getContentPane().setLayout(new GridLayout(2,1));
    this.add(topPanel);
    this.setTitle("时间按钮测试");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setResizable(false);// 设置不可变大小
     setSize(350, 300);
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int height = this.getHeight();
    int width = this.getWidth();
    int positionX = (new Double(dimension.getWidth()).intValue() - width) / 2;
    int positionY = (new Double(dimension.getHeight()).intValue() - height) / 2;
    this.setLocation(positionX, positionY);
    this.setVisible(true);

    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new TimmerTest();
    }}