本文实例讲述了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)转换工具:https://tool.zzvips.com/t/timestamp/
在线秒表计时器:https://tool.zzvips.com/t/miaobiao/
在线万年历:https://tool.zzvips.com/t/wannianli/
希望本文所述对大家java程序设计有所帮助。
原文链接:https://blog.csdn.net/C_jian/article/details/50513386