Java实现简单日历小程序 Java图形界面小日历开发

时间:2022-12-07 12:35:02

今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码:
首先创建一个CalendarBean类,用于基本的日期计算:

?
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
package other1;
 
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 date=Calendar.getInstance();  
      date.set(year,month-1,1);  
      int week=date.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=week,n=1;i<week+day;i++)  
      {  
          a[i]=String.valueOf(n) ;  
          n++;  
      }       
      return a;  
    }  
}

然后再创建一个主界面类,用于界面的实现:

?
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
package other1;
 
import java.awt.*;  
import java.awt.event.*;  
import javax.swing.*; 
  
public class CalendarFrame extends JFrame implements ActionListener  
{  
    JLabel labelDay[]=new JLabel[42];  
    JTextField text=new JTextField(10); 
    JButton titleName[]=new JButton[7];  
    JButton button = new JButton(); 
    String name[]={"日","一","二","三", "四","五","六"};  
    JButton nextMonth,previousMonth;  
    int year=1996,month=1; //启动程序显示的日期信息 
    CalendarBean calendar;  
    JLabel showMessage=new JLabel("",JLabel.CENTER);  
    JLabel lbl1 = new JLabel("请输入年份:"); 
    JLabel lbl2=new JLabel("   "); 
  
    public CalendarFrame()  
    {
    setBackground(new Color(0, 128, 128));  
      JPanel pCenter=new JPanel();  
      pCenter.setBackground(new Color(0, 139, 139));
        
     //将pCenter的布局设置为7行7列的GridLayout 布局。  
      pCenter.setLayout(new GridLayout(7,7));  
        
     //pCenter添加组件titleName[i] 
      for(int i=0;i<7;i++)  
      {  
        titleName[i]=new JButton(name[i]);  
        pCenter.add(titleName[i]);  
      }  
  
     //pCenter添加组件labelDay[i] 
      for(int i=0;i<42;i++)  
      {  
        labelDay[i]=new JLabel("",JLabel.CENTER);  
        pCenter.add(labelDay[i]); 
      }  
        
      text.addActionListener(this); 
      calendar=new CalendarBean();  
      calendar.setYear(year);  
      calendar.setMonth(month);  
      String day[]=calendar.getCalendar();  
  
      for(int i=0;i<42;i++)  
      {  
        labelDay[i].setText(day[i]);  
      }  
  
      nextMonth=new JButton("下月");  
      previousMonth=new JButton("上月");  
      button=new JButton("确定"); 
        
      //注册监听器 
      nextMonth.addActionListener(this);  
      previousMonth.addActionListener(this);  
      button.addActionListener(this); 
        
      JPanel pNorth=new JPanel(), 
      pSouth=new JPanel();  
      pNorth.add(showMessage);  
      pNorth.add(lbl2);  
      pNorth.add(previousMonth);  
      pNorth.add(nextMonth);  
      pSouth.add(lbl1);     
      pSouth.add(text); 
      pSouth.add(button); 
      showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" ); 
      ScrollPane scrollPane=new ScrollPane();  
      scrollPane.add(pCenter);  
      getContentPane().add(scrollPane,BorderLayout.CENTER);// 窗口添加scrollPane在中心区域  
      getContentPane().add(pNorth,BorderLayout.NORTH);// 窗口添加pNorth 在北面区域  
      getContentPane().add(pSouth,BorderLayout.SOUTH);// 窗口添加pSouth 在南区域。 
  
    }  
     
    public void actionPerformed(ActionEvent e)  
    {  
      if(e.getSource()==nextMonth)  
      {  
        month=month+1;  
        if(month>12)  
        month=1;  
        calendar.setMonth(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);  
        String day[]=calendar.getCalendar();  
  
        for(int i=0;i<42;i++)  
        {  
          labelDay[i].setText(day[i]);  
        }  
       }  
      else if(e.getSource()==button) 
      
        month=month+1;        
        if(month>12)         
           month=1;        
        calendar.setYear(Integer.parseInt(text.getText()));        
        String day[]=calendar.getCalendar();         
        for(int i=0;i<42;i++) 
        
          labelDay[i].setText(day[i]); 
        
      
     showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );  
    }  
}

最后用一个类调用即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package other1;
 
import javax.swing.JFrame; 
import javax.swing.UIManager; 
  
public class CalendarMainClass  
{  
    public static void main(String args[])  
    {  
       try
         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); //windows界面风格 
       }catch (Exception e) { 
        e.printStackTrace(); 
       
       CalendarFrame frame=new CalendarFrame();  
       frame.setBounds(100,100,360,300);  
       frame.setTitle("日历小程序"); 
       frame.setLocationRelativeTo(null);//窗体居中显示 
       frame.setVisible(true);  
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }  
}

运行结果如下:

Java实现简单日历小程序 Java图形界面小日历开发

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

原文链接:http://blog.csdn.net/llqqxf/article/details/51910139