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程序设计有所帮助。

以上是 Java实现的日历功能完整示例 的全部内容, 来源链接: utcz.com/z/360896.html

回到顶部