首页 > 编程 > Java > 正文

Java实现的日历功能完整示例

2019-11-26 09:15:30
字体:
来源:转载
供稿:网友

本文实例讲述了Java实现的日历功能。分享给大家供大家参考,具体如下:

应用名称:Java日历

用到的知识:Java GUI编程,日期操作

开发环境:win8+eclipse+jdk1.8

功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间。

效果图:

源代码:

CalendarFrame.java

import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.BevelBorder;import javax.swing.border.SoftBevelBorder;public class CalendarFrame extends JFrame implements ActionListener{  /**   * @author Nut   * 2016.01.13   */  private static final long serialVersionUID = -7260798316896145633L;  JLabel labelDay[] = new JLabel[42];  JButton titleName[] = new JButton[7];  String name[]={"日","一","二","三","四","五","六"};  JButton nextMonth,previousMonth;  JComboBox choiceYear,choiceMonth;  Calendarbean calendar;  JLabel showYear,showMonth;  JLabel showmessage=new JLabel("",JLabel.CENTER);  int year = 2011,month=2;  //构造方法初始化界面  public CalendarFrame(){    JPanel pCenter = new JPanel();    pCenter.setLayout(new GridLayout(7,7));    //星期栏    for(int i=0;i<7;i++){      titleName[i]=new JButton(name[i]);      titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));      pCenter.add(titleName[i]);    }    //日期栏    for(int i=0;i<42;i++){      labelDay[i]=new JLabel("",JLabel.CENTER);      labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED));      pCenter.add(labelDay[i]);    }    //年月选择栏    choiceYear=new JComboBox();    choiceMonth=new JComboBox();    showYear=new JLabel("年");    showMonth=new JLabel("月  ");    for(int i=1990;i<2050;i++)      choiceYear.addItem(i);    choiceYear.addActionListener(this);    for(int i=1;i<=12;i++)      choiceMonth.addItem(i);    choiceMonth.addActionListener(this);    calendar=new Calendarbean();    nextMonth=new JButton("下月");    previousMonth=new JButton("上月");    nextMonth.addActionListener(this);    previousMonth.addActionListener(this);    JPanel pNorth=new JPanel(),    pSouth=new JPanel();    pNorth.add(choiceYear);    pNorth.add(showYear);    pNorth.add(choiceMonth);    pNorth.add(showMonth);    pNorth.add(previousMonth);    pNorth.add (nextMonth);    pSouth.add(showmessage);    add(pCenter,BorderLayout.CENTER);    add(pNorth,BorderLayout.NORTH);    add(pSouth,BorderLayout.SOUTH);    setYearAndMonth(year,month);    setDefaultCloseOperation(DISPOSE_ON_CLOSE);  }public void setYearAndMonth(int y,int m){  calendar.setYear(y);  calendar.setMonth(m);  String day[]=calendar.getCalendar();  for(int i=0;i<42;i++)    labelDay[i].setText(day[i]);  SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 EEEE");//设置日期格式  showmessage.setText("系统时间:"+df.format(new Date()));}//事件动作public void actionPerformed(ActionEvent e){  if(e.getSource()==nextMonth){    month=month +1;    if(month>12)      month=1;    calendar.setMonth(month);    choiceMonth.setSelectedItem(month);    String day[]=calendar.getCalendar();    for(int i=0;i<42;i++){      labelDay[i].setText(day[i]);    }  }  else if(e.getSource()==previousMonth){    month=month-1;    if(month<1)      month=12;    calendar.setMonth(month);    choiceMonth.setSelectedItem(month);    String day[]=calendar.getCalendar();    for(int i=0;i<42;i++){      labelDay[i].setText(day[i]);    }  }  //选择年份  else if (e.getSource()==choiceYear){    calendar.setYear((Integer) choiceYear.getSelectedItem());    String day[]=calendar.getCalendar();    for(int i=0;i<42;i++){      labelDay[i].setText(day[i]);      }    }  //选择月份  else if (e.getSource()==choiceMonth){    calendar.setMonth((Integer) choiceMonth.getSelectedItem());    String day[]=calendar.getCalendar();    for(int i=0;i<42;i++){        labelDay[i].setText(day[i]);    }  }//  showmessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月");}}

Calendarbean.java

import java.util.Calendar;public class Calendarbean { String day[]; int year = 2005,month=0; public void setYear(int year){   this.year=year; } public int getYear(){   return year; } public void setMonth(int month){   this.month=month; } public int getMonth(){   return month; } public String[] getCalendar(){   String a[]=new String[42];   Calendar 日历=Calendar.getInstance();   日历.set(year,month-1,1);   int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;   int day=0;   if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)     day=31;   if(month==4||month==6||month==9||month==11)     day=30;   if(month==2){     if(((year%4==0)&&(year%100!=0))||(year%400==0))       day=29;     else       day=28;   }   for(int i=星期几,n=1;i<星期几+day;i++){     a[i]=String.valueOf(n);     n++;   }   return a; }}

CalendarMainClass.java

public class CalendarMainClass{  public static void main(String args[])  {    CalendarFrame frame = new CalendarFrame();    frame.setBounds(100,100,360,300);    frame.setTitle("Java日历");    frame.setVisible(true);    frame.setYearAndMonth(1990,1);//设置日历初始值为1990年1月  }}

PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

Unix时间戳(timestamp)转换工具:
http://tools.VeVB.COm/code/unixtime

在线日期/天数计算器:
http://tools.VeVB.COm/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.VeVB.COm/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.VeVB.COm/jisuanqi/onlinedatejsq

更多关于java相关内容感兴趣的读者可查看本站专题:《java日期与时间操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表