本文实例为大家分享了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