好得很程序员自学网

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

java实现日历应用程序设计

本文实例为大家分享了java实现日历应用程序设计的具体代码,供大家参考,具体内容如下

1、效果和要求

*在文本框inputYear中输入年份,验证年份的有效性;按回车键后,显示输入年份的正确日历
* 单击previousMonth按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的12月
* 单击nextMonth按钮,可以显示当前月的下一月的日历;如果月份大于1,则显示下一年的1月

2、源码

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

40

41

42

43

44

import java.util.Calendar;

public class CalendarBean {

    String day[];

    int year = 2013 , 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;

    }

    //返回某年某月1号开始的日期数组

    public String[] getDays() {

        String a[] = new String[ 42 ];

        Calendar 日历 = Calendar.getInstance();

        //注意:1月份是从0开始,所以要减1

        日历.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;

    }

}

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

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

public class CalendarFrame extends JFrame{

     JLabel labelDay[] = new JLabel[ 42 ];

     JLabel labelYear;

     JButton titleName[] = new JButton[ 7 ];

     JButton nextMonth, previousMonth;

     JLabel showMessage;

     JTextField inputYear;

     CalendarBean calendar;

     String name[] = { "日" , "一" , "二" , "三" , "四" , "五" , "六" };

     int year = 2013 , month = 1 ;

     String days[];

 

     public CalendarFrame() {

         super ( "日历应用程序" );

         calendar = new CalendarBean();

         calendar.setYear(year);

         calendar.setMonth(month);

         days = calendar.getDays();

         // 窗口添加scrollPane在中心区

         add(getCenterPanel(),BorderLayout.CENTER);

         // 窗口添加pNorth 在北面区域

         add(getNorthPanel(),BorderLayout.NORTH);

         // 窗口添加pSouth 在南区域。

         add(getSouthPanel(),BorderLayout.SOUTH);

     }

     private JPanel getNorthPanel() {

         JPanel panel = new JPanel();

         labelYear = new JLabel( "请输入年份:" );

         inputYear = new JTextField( 10 );

         previousMonth = new JButton( "上月" );

         nextMonth = new JButton( "下月" );

         /**

         * 添加时间监听

         */

         inputYear.addActionListener( new ActionListener() {

             @Override

             public void actionPerformed(ActionEvent e) {

                 try {

                     year = Integer.parseInt(inputYear.getText());

                 } catch (NumberFormatException el){

                     JOptionPane.showMessageDialog( null , "请输入正确年份!" );

                 }

                 calendar.setYear(year);

                 UpdateUI();

             }

         });

         previousMonth.addActionListener( new ActionListener() { //上个月

             @Override

             public void actionPerformed(ActionEvent e) {

                 month--; //获取上个月的时间

                 //System.out.println("Hello World");

                 if (month<= 0 ){ //跳到上一年

                     year--;

                     month = 12 ;

                 }

                 UpdateUI();;

             }

         });

         nextMonth.addActionListener( new ActionListener() { //下个月

             @Override

             public void actionPerformed(ActionEvent e) {

                 month++;

                 if (month> 12 ){ //到达下一年

                     year++;

                     month= 1 ;

                 }

                 UpdateUI();;

             }

         });

         panel.add(labelYear, new FlowLayout());

         panel.add(inputYear, new FlowLayout());

         panel.add(previousMonth, new FlowLayout());

         panel.add(nextMonth, new FlowLayout());

         return panel;

     }

     private JPanel getCenterPanel() {

         JPanel panel = new JPanel();

         // 将panel的布局设置为7行7列的GridLayout布局

         panel.setLayout( new GridLayout( 7 , 7 ));

         for ( int i = 0 ; i < 7 ; i++) {

             titleName[i] = new JButton(name[i]);

             // panel添加组件titleName[i]

             panel.add(titleName[i]);

         }

         for ( int i = 0 ; i < 42 ; i++) {

             labelDay[i] = new JLabel(days[i], JLabel.CENTER);

             // panel添加组件labelDay[i]

             panel.add(labelDay[i]);

         }

         return panel;

     }

     private JPanel getSouthPanel() {

         JPanel panel = new JPanel();

         showMessage = new JLabel( "日历: " + year + "年" + month + "月" );

         panel.add(showMessage);

         return panel;

     }

 

     //添加的方法

     private void UpdateUI(){

         calendar.setYear(year);

         calendar.setMonth(month);

         days = calendar.getDays();

         for ( int i = 0 ; i < 42 ; i++) {

             labelDay[i].setText(days[i]);

         }

         showMessage.setText( "日历:" +calendar.getYear()+ "年" +calendar.getMonth()+ "月" );

     }

}

CalendarMainClass.java

?

1

2

3

4

5

6

7

8

9

10

import javax.swing.*;

public class CalendarMainClass {

     public static void main(String args[]) {

         CalendarFrame frame = new CalendarFrame();

         frame.setBounds( 100 , 100 , 360 , 320 );

         frame.setVisible( true ); 

         frame.validate();

         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/qq_45708165/article/details/116864468

查看更多关于java实现日历应用程序设计的详细内容...

  阅读:20次