2025-05-23

 

Java寫的日歷小程序,算法效率雖然不算很高,卻是簡單實用的

CalendarBean.java

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;  

        }  

CalendarFrame.java

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()  

       {  

           JPanel pCenter=new JPanel();  

             

         //將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);  

           add(scrollPane,BorderLayout.CENTER);// 窗口添加scrollPane在中心區域  

           add(pNorth,BorderLayout.NORTH);// 窗口添加pNorth 在北面區域  

           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()+"月" );  

       }  

}  

 

  

CalendarMainClass .java

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); 

        }  

程序的效果圖:

 

 

 

 

本文出自 “IT的點點滴滴” 博客

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *