java 实现日历

Posted 夏芷雨涵梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 实现日历相关的知识,希望对你有一定的参考价值。

题目:java 日历

时间:2019.3.8

介绍:做一个窗体显示日历,最上边是两个按钮切换上下月,中间是日期展示,最下方显示当前的年月。

注:所有代码在Eclipse下调试运行。

代码:

窗体布局: Frame.java

package calendar;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class Frame extends JFrame
	JPanel panel1,panel2,panel3;//三个面板展示不同的内容
	JButton button1,button2;//两个按钮分别代表上月和下月
	String []str="日","一","二","三","四","五","六";
	JButton button[]=new JButton[str.length];
	JLabel [] label;
	JLabel now=new JLabel();
	calendarBean calen=new calendarBean();
	String []day;
	Frame()
		init();
	
	void init()
		calen.setYear(2019);
		calen.setMonth(3);
		button1=new JButton("上月");
		button1.setActionCommand("last");
		button1.addActionListener(new ActionListener()
			public void actionPerformed(ActionEvent e)
				calen.actionPerformed(e);
			
		);
		button2=new JButton("下月");
		button2.setActionCommand("next");
		button2.addActionListener(new ActionListener()
			public void actionPerformed(ActionEvent e)
				calen.actionPerformed(e);
			
		);
		panel1=new JPanel();
		panel1.add(button1);
		panel1.add(button2);
		GridLayout grid=new GridLayout(7,7);
		add(panel1,BorderLayout.NORTH);
		panel2=new JPanel();
		for(int i=0;i<str.length;i++)
			button[i]=new JButton(str[i]);
			panel2.add(button[i]);
		
		day=calen.getCalendar();
		label=new JLabel[42];
		for(int i=0;i<42;i++)
			label[i]=new JLabel();
			panel2.add(label[i]);
		
		calen.label=this.label;
		for(int i=0;i<day.length;i++)
			label[i].setText("        "+day[i]);
		
		add(panel2,BorderLayout.CENTER);
		panel2.setLayout(grid);
		panel3=new JPanel();
		now.setText(calen.year+"年"+calen.month+"月");
		calen.now=now;
		panel3.add(now);
		add(panel3,BorderLayout.SOUTH);
	

日历:calendarBean.java 

package calendar;

import javax.swing.*;
import java.awt.event.*;
import java.util.Calendar;

public class calendarBean implements ActionListener 
	int year = 0, month = 0;
	JLabel now;
	JLabel[] label;
	String[] day;

	public void setYear(int year) 
		this.year = year;
	

	public void setMonth(int month) 
		this.month = month;
	

	public String[] getCalendar() 
		String[] a = new String[42];
		Calendar rill = Calendar.getInstance();// 初始化一个日历对象
		rill.set(year, month - 1, 1);
		int weekday = rill.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 = 0; i < weekday; i++)
			a[i] = "";
		for (int i = weekday, n = 1; i < weekday + day; i++) 
			a[i] = String.valueOf(n);
			n++;
		
		for (int i = weekday + day; i < a.length; i++)
			a[i] = "";
		return a;

	

	public void actionPerformed(ActionEvent e) 
		String str = e.getActionCommand();
		if (str.equals("last")) 
			month--;
			if (month == 0) 
				year--;
				month = 12;
			
		 else if (str.equals("next")) 
			month++;
			if (month == 13) 
				year++;
				month = 1;
			
		
		now.setText(year + "年" + month + "月");
		day = getCalendar();
		for (int i = 0; i < day.length; i++) 
			label[i].setText("        " + day[i]);
		
	

main.java

package calendar;
import javax.swing.JFrame;
public class main 

	public static void main(String[] args) 
		// TODO 自动生成的方法存根
		Frame f=new Frame();
		f.setTitle("日历");
		f.setBounds(100, 100, 400, 400);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	


 运行截图:

 

以上是关于java 实现日历的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么获取一个时间的年月日

JAVA编写简单的日历,输入日期即可查看日历

Java小日历

python 练习 输入年月 输出当年当月日历 求代码 重赏

做一个android日历,从哪儿入手?

EasyUI Calendar 日历插件,只显示年月。