【Java】java日历

应用名称: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月
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值