好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

本文实例讲述了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.tuohang.net/t/timestamp/

在线秒表计时器: https://tool.tuohang.net/t/miaobiao/

在线万年历: https://tool.tuohang.net/t/wannianli/

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

原文链接:https://blog.csdn.net/C_jian/article/details/50513386

查看更多关于Java实现的日历功能完整示例的详细内容...

  阅读:34次