首页 > 编程 > Java > 正文

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

2019-11-26 10:15:30
字体:
来源:转载
供稿:网友

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

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

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

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

最后用一个类调用即可:

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

运行结果如下:

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表