本文实例讲述了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
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论