日历-Java

阅读更多
package com.demo.yongjian;
import java.awt.BorderLayout;
public class CalenderTrain extends JFrame implements ActionListener
{
//月份和年份的下拉列表框
private JComboBox MonthBox=new JComboBox();
private JComboBox YearBox=new JComboBox();
//月份和年份的标签
private JLabel YearLabel=new JLabel("年份:");
private JLabel MonthLabel=new JLabel("月份:");
//“查看”和“今天”两个按钮
private JButton button_ok=new JButton("查看");
private JButton button_today=new JButton("今天");
//获取今天的日期、年份、月份
private Date now_date=new Date();
private int now_year=now_date.getYear()+1900;
private int now_month=now_date.getMonth();
private boolean todayFlag=false;//是否显示今天的日期
//用一组按钮显示日期,一共7行7列,第一行为星期的名字
private JButton[] button_day=new JButton[42];
private final String[] week={"日","一","二","三","四","五","六"};
private JButton[] button_week=new JButton[7];
private String year_int=null;//保存用户选择的年份
private int month_int;//保存用户选择的月份
//构造函数
public CalenderTrain()
{
   super();
   this.setTitle("日历");//设置标题
   this.init();
   this.setLocation(500,300);
   this.setResizable(false);//设置面板的大小不能变化
   pack();
}
//初始化
private void init()
{
   Font font=new Font("Dialog",Font.BOLD,14);
   YearLabel.setFont(font);
   MonthLabel.setFont(font);
   button_today.setFont(font);
   //设定年份区间,为当前年份的过去10年到当前年份的未来20年
   for(int i=now_year-10;i<=now_year+20;i++)
   {
    YearBox.addItem(i+"");
   }
   //设定月份区间,12个月
   for(int i=1;i<13;i++)
   {
    MonthBox.addItem(i+"");
   }
   //设定月份下拉列表为当前月份
   MonthBox.setSelectedIndex(now_month);
   //放置下拉列表框和控制按钮的面板
   JPanel panel_ym=new JPanel();
   panel_ym.add(YearLabel);
   panel_ym.add(YearBox);
   panel_ym.add(MonthLabel);
   panel_ym.add(MonthBox);
   panel_ym.add(button_ok);
   panel_ym.add(button_today);
   //为两个按钮添加事件侦听器
   button_ok.addActionListener(this);
   button_today.addActionListener(this);
   JPanel panel_day=new JPanel();//放置日期面板
   // 网格布局管理器,7行7列,网格之间水平和垂直方向上间隔均为5
   panel_day.setLayout(new GridLayout(7,7,3,3));
   //添加星期的名字,并放到面板里
   for(int i=0;i<7;i++)
   {
    button_week[i]=new JButton(" ");
    button_week[i].setText(week[i]);
    button_week[i].setForeground(Color.black);
    panel_day.add(button_week[i]);
   }
   button_week[0].setForeground(Color.red);
   button_week[6].setForeground(Color.red);
   //添加日期,放到面板里
   for(int i=0;i<42;i++)
   {
    button_day[i]=new JButton(" ");
    panel_day.add(button_day[i]);
   }
   this.paintDay();//显示当前年月的日期
   JPanel panel_main=new JPanel();//放置以上两个面板
   //边界布局管理器
   panel_main.setLayout(new BorderLayout());
   panel_main.add(panel_day,BorderLayout.SOUTH);
   panel_main.add(panel_ym,BorderLayout.NORTH);
   getContentPane().add(panel_main);
}
//显示当前年月的日期
private void paintDay()
{
   if(todayFlag)
   {
    //要求显示今天的日历
    year_int=now_year+"";
    month_int=now_month;
   }
   else
   {
    //否则,从下拉框中获取用户选择的年月
    year_int=YearBox.getSelectedItem().toString();
    month_int=MonthBox.getSelectedIndex();//被选的序号
   }
   int year_sel=Integer.parseInt(year_int)-1900;//获取年份值
   Date firstDay=new Date(year_sel,month_int,1);//构造该月的第一天
   GregorianCalendar cal=new GregorianCalendar();//创建一个GregorianCalendar实例
   cal.setTime(firstDay);
   int days=0;//存放某个月份的天数
   int day_week=0;//存放某个月的第一天是星期几的数值
   //判断是几月份,根据它来设定day的值,其中二月份要判断是否是闰年
   if(month_int==0||month_int==2||month_int==4||month_int==6||month_int==7||month_int==9||month_int==11)
   {
    days=31;
   }
   else if(month_int==3||month_int==5||month_int==8||month_int==10)
   {
    days=30;
   }
   else
   {
    //二月,如果是闰年,则有29天,否则是28天
    if(cal.isLeapYear(year_sel))
     days=29;
    else
     days=28;
   }
   //getDay方法获取该天是星期几
   day_week=firstDay.getDay();
   int count=1;
   //绘制按钮,在这里首先要根据选定的月份的第一天是星期几来确定绘制按钮的起始位置
   //其中day_week就是我们要绘制的起始位置,对于那些没有数值可以显示的按钮要置空
   for(int i=day_week;i 
  

 http://hi.baidu.com/lgb5301314/item/8f4b28d949d5563c48e1dd80

  • 日历-Java_第1张图片
  • 大小: 11.7 KB
  • 查看图片附件

你可能感兴趣的:(java)