⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daypanel.java

📁 用java的awt和swing自制一个 简单的日历
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package calendar;

import java.awt.Color;
import javax.swing.*;

public class DayPanel extends JPanel {
	//定义日历中用到的35个标签
	private DayLabel day1;
	private DayLabel day2;
	private DayLabel day3;
	private DayLabel day4;
	private DayLabel day5;
	private DayLabel day6;
	private DayLabel day7;
	private DayLabel day8;
	private DayLabel day9;
	private DayLabel day10;
	private DayLabel day11;
	private DayLabel day12;
	private DayLabel day13;
	private DayLabel day14;
	private DayLabel day15;
	private DayLabel day16;
	private DayLabel day17;
	private DayLabel day18;
	private DayLabel day19;
	private DayLabel day20;
	private DayLabel day21;
	private DayLabel day22;
	private DayLabel day23;
	private DayLabel day24;
	private DayLabel day25;
	private DayLabel day26;
	private DayLabel day27;
	private DayLabel day28;
	private DayLabel day29;
	private DayLabel day30;
	private DayLabel day31;
	private DayLabel day32;
	private DayLabel day33;
	private DayLabel day34;
	private DayLabel day35;

	private  static DayLabel  CurrentSelection=null;
	
	public DayPanel()
	{
		init();
		UpdateCalendar();
		addMouseListener();
		dayPanelLayout();
	}
	/**
	 * 根据标签名设置标签的背景色
	 * @param lable
	 */
	public void setBackGround(String lable)
	{
		for(int i=1;i<=35;i++)
		{
			DayLabel temp=getLabel("day"+i);
			if(temp.getText().trim().equals(lable))
			{
				temp.setBackground(new Color(153, 255, 0));
				DayPanel.setCurrentSeletion(temp);
				break;
			}
				
		}
		
	}
	/**
	 * 根据标签名除去标签背景色
	 * @param lable
	 */
	public void clearBackGround(String lable) {
		for(int i=1;i<=35;i++)
		{
			DayLabel temp=getLabel("day"+i);
			if(temp.getText().trim().equals(lable))
			{
				temp.setBackground(null);
				break;
			}
				
		}
	}
	/**
	 * 更新日历的显示
	 */
	
	public void UpdateCalendar() {
		int year=MyCalendar.time.getYear();
		int month=MyCalendar.time.getMonth();
		int day=MyCalendar.time.getDay();
		int firstDayOfWeek=MyCalendar.time.getFirstDayOfMonth();
		clearBackGround(Integer.toString(day));
		int days=0;
		int i;
		days = getDaysOfMonth(year, month, days);
		for(i=1;i<firstDayOfWeek;i++)
			this.getLabel("day"+i).setText("");
		for(i=0;i<days;i++)
		{
			if(firstDayOfWeek<=35)
			     this.getLabel("day"+firstDayOfWeek++).setText(Integer.toString(i+1));
			else
				break;
		}
		if(i==days && firstDayOfWeek<=35)
		{
			for(i=firstDayOfWeek;i<=35;i++)
				this.getLabel("day"+i).setText("");
		}
		if(i!=days)
		{
			int left=days-i;
			for(int j=0,k=1;j<left;j++,i++)
			{
				this.getLabel("day"+k++).setText(Integer.toString(i+1));
			}
		}
		setBackGround(Integer.toString(MyCalendar.time.getDay()));
	}

	/**
	 * 根据标签名称得到相应的标签
	 * @param label
	 * @return
	 */
    private DayLabel getLabel(String label)
	{
	  if(label.equalsIgnoreCase("day1"))
		 return day1;
		  else if(label.equalsIgnoreCase("day2"))
		 return day2;
		  else if(label.equalsIgnoreCase("day3"))
		 return day3;
		  else if(label.equalsIgnoreCase("day4"))
		 return day4;
		  else if(label.equalsIgnoreCase("day5"))
		 return day5;
		  else if(label.equalsIgnoreCase("day6"))
		 return day6;
		  else if(label.equalsIgnoreCase("day7"))
		 return day7;
		  else if(label.equalsIgnoreCase("day8"))
		 return day8;
		  else if(label.equalsIgnoreCase("day9"))
		 return day9;
		  else if(label.equalsIgnoreCase("day10"))
		 return day10;
		  else if(label.equalsIgnoreCase("day11"))
		 return day11;
		  else if(label.equalsIgnoreCase("day12"))
		 return day12;
		  else if(label.equalsIgnoreCase("day13"))
		 return day13;
		  else if(label.equalsIgnoreCase("day14"))
		 return day14;
		  else if(label.equalsIgnoreCase("day15"))
		 return day15;
		  else if(label.equalsIgnoreCase("day16"))
		 return day16;
		  else if(label.equalsIgnoreCase("day17"))
		 return day17;
		  else if(label.equalsIgnoreCase("day18"))
		 return day18;
		  else if(label.equalsIgnoreCase("day19"))
		 return day19;
		  else if(label.equalsIgnoreCase("day20"))
		 return day20;
		  else if(label.equalsIgnoreCase("day21"))
		 return day21;
		  else if(label.equalsIgnoreCase("day22"))
		 return day22;
		  else if(label.equalsIgnoreCase("day23"))
		 return day23;
		  else if(label.equalsIgnoreCase("day24"))
		 return day24;
		  else if(label.equalsIgnoreCase("day25"))
		 return day25;
		  else if(label.equalsIgnoreCase("day26"))
		 return day26;
		  else if(label.equalsIgnoreCase("day27"))
		 return day27;
		  else if(label.equalsIgnoreCase("day28"))
		 return day28;
		  else if(label.equalsIgnoreCase("day29"))
		 return day29;
		  else if(label.equalsIgnoreCase("day30"))
		 return day30;
		  else if(label.equalsIgnoreCase("day31"))
		 return day31;
		  else if(label.equalsIgnoreCase("day32"))
		 return day32;
		  else if(label.equalsIgnoreCase("day33"))
		 return day33;
		  else if(label.equalsIgnoreCase("day34"))
		 return day34;
		  else if(label.equalsIgnoreCase("day35"))
		 return day35;
		return null;
	}
	/**
	 * 根据年月日得到当前月份下的天数
	 * @param year
	 * @param month
	 * @param days
	 * @return
	 */
	private int getDaysOfMonth(int year, int month, int days) {
		switch(month)
		{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:days=31;break;
		case 4:
		case 6:
		case 9:
		case 11:days=30;break;
		case 2:
		{
			if((year%4==0&& year%100!=0)|| year%400==0)
				days=29;
			else
				days=28;
		}
		break;
		default:break;
		}
		return days;
	}
	/**
	 * 设置当前被选日期
	 * @param arg
	 */
	public  static void setCurrentSeletion(DayLabel arg)
	{
		CurrentSelection=arg;
	}
	/**
	 * 返回当前被选日期标签
	 * @return
	 */
	public  static DayLabel getCurrentSelection()
	{
		return CurrentSelection;
	}

	/**
	 * 添加每个标签的鼠标监听
	 */
	private void addMouseListener() {
		day1.addMouseListener(day1);
		day2.addMouseListener(day2);
		day3.addMouseListener(day3);
		day4.addMouseListener(day4);
		day5.addMouseListener(day5);
		day6.addMouseListener(day6);
		day7.addMouseListener(day7);
		day8.addMouseListener(day8);
		day9.addMouseListener(day9);
		day10.addMouseListener(day10);
		day11.addMouseListener(day11);
		day12.addMouseListener(day12);
		day13.addMouseListener(day13);
		day14.addMouseListener(day14);
		day15.addMouseListener(day15);
		day16.addMouseListener(day16);
		day17.addMouseListener(day17);
		day18.addMouseListener(day18);
		day19.addMouseListener(day19);
		day20.addMouseListener(day20);
		day21.addMouseListener(day21);
		day22.addMouseListener(day22);
		day23.addMouseListener(day23);
		day24.addMouseListener(day24);
		day25.addMouseListener(day25);
		day26.addMouseListener(day26);
		day27.addMouseListener(day27);
		day28.addMouseListener(day28);
		day29.addMouseListener(day29);
		day30.addMouseListener(day30);
		day31.addMouseListener(day31);
		day32.addMouseListener(day32);
		day33.addMouseListener(day33);
		day34.addMouseListener(day34);
		day35.addMouseListener(day35);
	}

	/**
	 * 初始化每一个标签
	 */
	private void init() {
		day1=new DayLabel("");
		day2=new DayLabel("");
		day3=new DayLabel("");
		day4=new DayLabel("");
		day5=new DayLabel("");
		day6=new DayLabel("");
		day7=new DayLabel("");
		day8=new DayLabel("");
		day9=new DayLabel("");
		day10=new DayLabel("");
		day11=new DayLabel("");
		day12=new DayLabel("");
		day13=new DayLabel("");
		day14=new DayLabel("");
		day15=new DayLabel("");
		day16=new DayLabel("");
		day17=new DayLabel("");
		day18=new DayLabel("");
		day19=new DayLabel("");
		day20=new DayLabel("");
		day21=new DayLabel("");
		day22=new DayLabel("");
		day23=new DayLabel("");
		day24=new DayLabel("");
		day25=new DayLabel("");
		day26=new DayLabel("");
		day27=new DayLabel("");
		day28=new DayLabel("");
		day29=new DayLabel("");
		day30=new DayLabel("");
		day31=new DayLabel("");
		day32=new DayLabel("");
		day33=new DayLabel("");
		day34=new DayLabel("");
		day35=new DayLabel("");
		
	}

	/**
	 * 对DayPanel进行布局
	 */
	private void dayPanelLayout() {
		GroupLayout jPanel2Layout = new GroupLayout(
				this);
		setLayout(jPanel2Layout);
		jPanel2Layout
				.setHorizontalGroup(jPanel2Layout
						.createParallelGroup(
								GroupLayout.Alignment.LEADING)
						.addGroup(
								jPanel2Layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												jPanel2Layout
														.createParallelGroup(
																GroupLayout.Alignment.LEADING)
														.addGroup(
																jPanel2Layout
																		.createSequentialGroup()
																		.addComponent(
																				day1,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day2,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day3,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day4,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day5,
																				GroupLayout.PREFERRED_SIZE,
																				35,
																				GroupLayout.PREFERRED_SIZE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day6,
																				GroupLayout.PREFERRED_SIZE,
																				34,
																				GroupLayout.PREFERRED_SIZE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day7,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE))
														.addGroup(
																jPanel2Layout
																		.createSequentialGroup()
																		.addComponent(
																				day8,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day9,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day10,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day11,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day12,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				day13,
																				GroupLayout.DEFAULT_SIZE,
																				45,
																				Short.MAX_VALUE)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -