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

📄 modifylabel.java

📁 用java的awt和swing自制一个 简单的日历
💻 JAVA
字号:
package calendar;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JOptionPane;

public class ModifyLabel extends Label implements MouseListener{

	private boolean flag;
	
	public ModifyLabel(String name) {
	  super(name);
	  flag=false;
	}

	public void mouseClicked(MouseEvent arg0) {
		
		int year=MyCalendar.time.getYear();
		int month=MyCalendar.time.getMonth();
		int day=MyCalendar.time.getDay();
		
		DayLabel cur=TopPanel.getCurrentLabel();
		//当前没有选中年、月、日
		if(cur==null)
			JOptionPane.showMessageDialog(this.getParent(),"对不起,请选择您所要更改的年、月、日!","错误提示",JOptionPane.ERROR_MESSAGE);
		else
		{
			BottomPanel.bopanel.clearBackGround(Integer.toString(day));
			String type=cur.getName().trim();
			//如果是增加按钮
			if(this.getText().trim()=="^")
			{
				if(type=="DD")   //如果是日期
				{
					day=Integer.parseInt(cur.getText().trim());
					day=getDays(year,day,true);
					cur.setText(Integer.toString(day));
				}
				else if(type=="MM")//如果是月份
				{
					month=Integer.parseInt(cur.getText().trim());
					month++;
					if(month>12)
					     month%=12;
					int days=0;
					TopPanel temp=(TopPanel) this.getParent().getParent();
					day=Integer.parseInt(temp.getDD().getText().trim());
					year=Integer.parseInt(temp.getYYYY().getText().trim());
					days = getMonthDays(year, month, days);
					if(day>days)
					{
						temp.getDD().setText(Integer.toString(days));
						day=days;
					}
					cur.setText(Integer.toString(month));
				}
				else if(type=="YYYY")//如果是年份
				{
					year=Integer.parseInt(cur.getText().trim());
					TopPanel temp=(TopPanel) this.getParent().getParent();
					month=Integer.parseInt(temp.getMM().getText().trim());
					day=Integer.parseInt(temp.getDD().getText().trim());
					if(month==2&& day==29)
					{
						day=28;
						temp.getDD().setText(Integer.toString(day));
					}
					year++;
					cur.setText(Integer.toString(year));
				}
			}
			else if(this.getText().trim()=="v")//如果是减少操作
			{
				if(type=="DD")//如果是日期
				{
					 day=Integer.parseInt(cur.getText().trim());
					if(flag==false)
					{
					      flag=true;
					}
					if(day>1)
						day--;
					else
						day=getDays(year,day,false);
					cur.setText(Integer.toString(day));
				}
				else if(type=="MM")//如果是月份
				{
					month=Integer.parseInt(cur.getText().trim());
					int days=0;
					TopPanel temp=(TopPanel) this.getParent().getParent();
					day=Integer.parseInt(temp.getDD().getText().trim());
					year=Integer.parseInt(temp.getYYYY().getText().trim());
					if(month>1)
						month--;
					else
						month=12;
					days = getMonthDays(year, month, days);
					if(day>days)
					{
						temp.getDD().setText(Integer.toString(days));
						day=days;
					}
					cur.setText(Integer.toString(month));
				}
				else if(type=="YYYY")//如果是年份
				{
					year=Integer.parseInt(cur.getText().trim());
					if(year>1)
					{
						TopPanel temp=(TopPanel) this.getParent().getParent();
						month=Integer.parseInt(temp.getMM().getText().trim());
						day=Integer.parseInt(temp.getDD().getText().trim());
						if(month==2&& day==29)
						{
							day=28;
							temp.getDD().setText(Integer.toString(day));
						}
						year--;
					}
					else
					   JOptionPane.showMessageDialog(this.getParent(),"对不起,您已经将年减到0了!","错误提示",JOptionPane.ERROR_MESSAGE);
				     cur.setText(Integer.toString(year));
				}
			}
			else
			{
				//System.exit(0);
			}
			MyCalendar.time.updateTime(year, month, day);
			BottomPanel.bopanel.Update();
		}
			
		
	}

	/**
	 * 得到当前月份的天数
	 * @param year
	 * @param month
	 * @param days
	 * @return
	 */
	private int getMonthDays(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;
	}
    private int getDays(int year,int day,boolean flag)
    {
    	TopPanel temp=(TopPanel) this.getParent().getParent();
    	int month=Integer.parseInt(temp.getMM().getText().trim());
		switch(month)
		{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		{
			if(flag==true){
			day++;
			if(day>31)
				day=1;
			}
			else
			{
				day=31;
			}
			break;
		}
		case 4:
		case 6:
		case 9:
		case 11:
		{
			if(flag==true){
			day++;
			if(day>30)
				day=1;
			}
			else
				day=30;
			break;
		}
		case 2:
		{
			if(flag==true){
			day++;
			}
			year=Integer.parseInt(temp.getYYYY().getText().trim());
			if((year%4==0&&year%100!=0)||year%400==0)
			{
				if(flag==true)
				{
					if(day>29)
					   day=1;
				}
				else if(flag==false)
					day=29;
			}
			else
			{
				if(flag==true)
				{
				  if(day>28)
					day=1;
				}
				else
					day=28;
			}
			break;
		}
		default:break;
		}
		return day;
    }
	public void mouseEntered(MouseEvent arg0) {
		setCursor(new Cursor(Cursor.HAND_CURSOR));
		
	}

	public void mouseExited(MouseEvent arg0) {
		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
		
	}

	public void mousePressed(MouseEvent arg0) {
		
	}

	public void mouseReleased(MouseEvent arg0) {
		
	}

}

⌨️ 快捷键说明

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