【Java】java日历

来源:互联网 发布:苹果windows怎么截屏 编辑:程序博客网 时间:2024/06/06 05:15

应用名称:Java日历

用到的知识:Java GUI编程,日期操作

开发环境:win8+eclipse+jdk1.8

功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间。

效果图:


源代码:

CalendarFrame.java

import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.BevelBorder;import javax.swing.border.SoftBevelBorder;public class CalendarFrame extends JFrame implements ActionListener{/** * @author Nut * 2016.01.13 */private static final long serialVersionUID = -7260798316896145633L;JLabel labelDay[] = new JLabel[42];JButton titleName[] = new JButton[7];String name[]={"日","一","二","三","四","五","六"};JButton  nextMonth,previousMonth;JComboBox choiceYear,choiceMonth;Calendarbean calendar;JLabel showYear,showMonth;JLabel showmessage=new JLabel("",JLabel.CENTER);int year = 2011,month=2;//构造方法初始化界面public CalendarFrame(){JPanel pCenter = new JPanel();pCenter.setLayout(new GridLayout(7,7));//星期栏for(int i=0;i<7;i++){titleName[i]=new JButton(name[i]);titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));pCenter.add(titleName[i]);}//日期栏for(int i=0;i<42;i++){labelDay[i]=new JLabel("",JLabel.CENTER);labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED));pCenter.add(labelDay[i]);}//年月选择栏choiceYear=new JComboBox();choiceMonth=new JComboBox();showYear=new JLabel("年");showMonth=new JLabel("月   ");for(int i=1990;i<2050;i++)choiceYear.addItem(i);choiceYear.addActionListener(this);for(int i=1;i<=12;i++)choiceMonth.addItem(i);choiceMonth.addActionListener(this);calendar=new Calendarbean();nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNorth=new JPanel(),pSouth=new JPanel();pNorth.add(choiceYear);pNorth.add(showYear);pNorth.add(choiceMonth);pNorth.add(showMonth);pNorth.add(previousMonth);pNorth.add (nextMonth);pSouth.add(showmessage);add(pCenter,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setYearAndMonth(year,month);setDefaultCloseOperation(DISPOSE_ON_CLOSE);}public void setYearAndMonth(int y,int m){calendar.setYear(y);calendar.setMonth(m);String day[]=calendar.getCalendar();for(int i=0;i<42;i++)labelDay[i].setText(day[i]);SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 EEEE");//设置日期格式showmessage.setText("系统时间:"+df.format(new Date()));}//事件动作public void actionPerformed(ActionEvent e){if(e.getSource()==nextMonth){month=month +1;if(month>12)month=1;calendar.setMonth(month);choiceMonth.setSelectedItem(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);choiceMonth.setSelectedItem(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}//选择年份else if (e.getSource()==choiceYear){calendar.setYear((Integer) choiceYear.getSelectedItem());String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}//选择月份else if (e.getSource()==choiceMonth){calendar.setMonth((Integer) choiceMonth.getSelectedItem());String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}//showmessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月");}}

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 日历=Calendar.getInstance();  日历.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;  }}

CalendarMainClass.java

public class CalendarMainClass{public static void main(String args[]){CalendarFrame frame = new CalendarFrame();frame.setBounds(100,100,360,300);frame.setTitle("Java日历");frame.setVisible(true);frame.setYearAndMonth(1990,1);//设置日历初始值为1990年1月}}


0 1