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

本文实例讲述了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.jb51.net/code/unixtime

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

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

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

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

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

(0)

相关推荐

  • java万年历,获取该年月日历表

    这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表     1.1900年1月1日是星期一     2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天     3.总天数%7得出从星期几开始     注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元.     so,在本程序中不考了1900年以前的年份了.有兴趣的可以自己研究下. import java.uti

  • java编写全年考勤日历

    本文实例为大家分享了java编写全年考勤日历的具体代码,供大家参考,具体内容如下 JAVA代码: package com.wp.action; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; public class CalendarAction extends MainAction { private stati

  • Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; 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

  • 日历显示读出输入的年月的java代码

    复制代码 代码如下: import java.awt.*;import java.awt.event.*;import java.util.Calendar; import javax.swing.JOptionPane; class CalendarBean {  //定义一个日历类 String day[]; //天数数组 int year = 2011, month = 9; //给定一个初始年月 public void setYear(int year) {   this.year =

  • 使用JavaBean创建您的网上日历本(1)

    有的朋友曾经说过,如果有一个网上的日记本,或者一个网上的万年历能提醒自己到时去干什么事情就好了.其实呀,这样的日历本您自己也能做一个.不信你看下面的例子: 〈HTML〉 〈HEAD〉 〈TITLE〉万年历记事本〈/TITLE〉 〈/HEAD〉 〈BODY BGCOLOR ="white"〉 //设置页面脚本语言是java,导入HtmlCalendarNotePad类,HtmlCalendarNotePad在后面将会讲到〈%@ page language="java"

  • 学习Java中的日期和时间处理及Java日历小程序的编写

    Java 在 java.util 包中提供了 Date 类,这个类封装了当前的日期和时间. Date 类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date( ) 下面的构造函数接收一个参数等于自1970年1月1日午夜起已经过的毫秒数 Date(long millisec) 一旦有一个可用的日期对象,可以调用以下任何一种支持的方法使用时间: SN 方法和描述 1 boolean after(Date date) 如果调用Date对象包含或晚于指定的日期则返回true,否则,返回

  • Java实现按年月打印日历功能【基于Calendar】

    本文实例讲述了Java实现按年月打印日历功能.分享给大家供大家参考,具体如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalendarBook { public static void main(String[] args) throws ParseException { C

  • java实现日历(某年的日历,某月的日历)用户完全自定义

    用户可以自定义打印某一年的年历,即:把某一年的日历全部打印出来 如把2013年的年历打印出来如下: 复制代码 代码如下: January  2013          ---------------------------------------------   Sun   Mon   Tue   Wed   Thu   Fri   Sat     2     3     4     5     7     8     9     10    11    12    14    15    16

  • 使用JavaBean创建您的网上日历本(2)

    JavaBean程序分析 我想把HtmlCalendarNotePad中的主要方法介绍一些,相信会大家有所帮助 public void setYear(int year) //设置年份 .默认值为当前的年份 public int getYear() //获得年份 .默认值为当前的年份 //这是标准Java程序写法,因为Java程序就是一个类所以经常写这种setXXX/getXXXpublic void setMonth(int month) //设置月份(1-12),默认值为当前的月 publi

  • Java中的Calendar日历API用法完全解析

    第一部分 Calendar介绍 Calendar 定义: public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {} Calendar 可以看作是一个抽象类. 它的实现,采用了设计模式中的工厂方法.表现在:当我们获取Calendar实例时,Calendar会根据传入的参数来返回相应的Calendar对象.获取Calendar实例,有以下两种方式: (1) 当我们通过 Cal

  • java制作android 日历代码分享

    代码很简单,就不多废话了 复制代码 代码如下: //读取日历事件     public static void getCalendarInfo(Activity activity,String tag){         String[] projection = new String[]{CalendarContract.Events._ID,CalendarContract.Events.TITLE};         ContentResolver cr = activity.getCon

随机推荐