欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-10-19 20:25:52
今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: pack...

今天给大家介绍一下如何用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);  
    }   
} 

运行结果如下:

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

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