
本文实例讲述了Java实现的日历功能。分享给大家供大家参考,具体如下:
应用名称:Java日历
用到的知识:Java GUI编程,日期操作
开发环境:win8+eclipse+jdk1.8
功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间。
效果图:

源代码:
CalendarFrame.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
1
2
3
4
5
6
7
8
9
10
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程序设计有所帮助。
您可能感兴趣的文章:
原网址: 访问
创建于: 2024-01-03 12:41:54
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论