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

📄 mainframe.java

📁 用Java Swing写的一个日历程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			String pass= "   OK   ";
			String quit="Cancel";
			String pre="<<";
			String next=">>";
			String c_pre="∧";
			String c_next="∨";
			String  com=null;
			
			com=e.getActionCommand();
			
			System.out.println("comman is:"+com);						
			
			int c_year, c_month, c_week; 
			c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到当前所选年份 
			c_month = Integer.parseInt(com2.getSelectedItem().toString())-1; // 得到当前月份,并减1,计算机中的月为0-11
			System.out.println("year---"+c_year+"month-----"+(c_month+1));
			
			if(com.equals(pass))    //响应OK按钮,选择日期并显示
			{
				System.out.println("It is ok !");
				String getdate=null;
				getdate=getSelectData();
				System.out.println("Selected date is \t"+getdate);
				showDate(getdate);
			}
			
			if(com.equals(quit))    //响应cancal按钮,退出
			{
				date_mf.dispose();
			}
			
			if(com.equals(pre))    //实现上一个月按钮
			{
				c_month-=1;
				if(c_month<0)
				{
					c_year-=1;
					c_month=11;
				}
				com1.setSelectedIndex(c_year-1);
				com2.setSelectedIndex(c_month);
				
				sel_year=com1.getSelectedItem().toString();
				sel_month=com2.getSelectedItem().toString();
				String date=sel_month+"-"+sel_day+"-"+sel_year;
				text.setText(date);
				c_week = use(c_year, c_month); // 调用函数use,得到星期几 
				reSetDay(c_week, c_year, c_month,sel_day); // 调用函数Resetday 	
			}
			
			if(com.equals(next))     //实现下一个月
			{			
				c_month+=1;
				
				if(c_month>11)
				{
					c_year+=1;
					c_month=0;
				}			
				sel_year=com1.getSelectedItem().toString();
				sel_month=com2.getSelectedItem().toString();
				
				com1.setSelectedIndex(c_year-1);
				com2.setSelectedIndex(c_month);
				String date=sel_month+"-"+sel_day+"-"+sel_year;
				text.setText(date);
				c_week = use(c_year, c_month); // 调用函数use,得到星期几 
				reSetDay(c_week, c_year, c_month,sel_day); // 调用函数Resetday 	
			}
			
			if(com.equals(c_pre))    //日期文本框上一个日期的方法
			{
				int temp_str;
				int temp_end;
				int str_pos=-1;
				int end_pos=-1;
				int len=0;
				int day_count[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
				String l_year=null;
				String l_month=null;
				String l_day=null;
				
				String field=text.getText();//获得时间
				len=field.length();
				str_pos=field.indexOf('-');
				end_pos=field.lastIndexOf('-');
				temp_str=str;
				temp_end=end;
				str=text.getSelectionStart();
				end=text.getSelectionEnd();//获得选中的区域的位置
				
				if(str==end)
				{
					str=temp_str;
					end=temp_end;
				}
				l_month=field.substring(0, str_pos);
				l_day=field.substring(str_pos+1,end_pos);
				l_year=field.substring(end_pos+1,len);//获得各个位置的日期数值
				
				System.out.println(str+"---str and end---"+end);
				System.out.println(str_pos+"********"+end_pos);		//控制台输出信息		
				
				Integer s_year=new Integer(l_year);
				Integer s_month=new Integer(l_month);
				Integer s_day=new Integer(l_day);
				
				System.out.println(s_month+"%%%%%"+s_day+"%%%%%%%"+s_year);//控制台输出信息
				
				if(s_year%4==0)//闰年的2月有29天
                   day_count[2]=29;	
				
				if(str==0)//修改月份
				{
					s_month-=1;
					if(s_month<1)
					{
						s_month=12;
						s_year-=1;
						if(s_year<1)
							s_year=1;
					}
				}
				if(1<str && str<4)//修改日期
				{
					s_day-=1;
					if(s_day<1)
					{
						s_month-=1;
						if(s_month<1)
						{
							s_month=12;
							s_year-=1;
							if(s_year%4==0)
								day_count[2]=29;
							else
								day_count[2]=28;
							if(s_year<1)
								s_year=1;
						}
						s_day=day_count[s_month];
					}
					sel_day=String.valueOf(s_day);
				}
				if(str>=4)//修改年份
				{
					s_year-=1;
					if(s_year<1)
						s_year=1;
				}
				
				System.out.println(s_month+"%%%%%"+s_day+"%%%%%%%"+s_year);//控制台输出信息
				
				String m_date=s_month+"-"+s_day+"-"+s_year;
			    text.setText(m_date);//重设日期			    
			    int s_week = use(s_year, s_month-1); // 调用函数use,得到星期几
			    com1.setSelectedIndex(s_year - 1); // 设置下拉列表显示为当前年 
			    com2.setSelectedIndex(s_month - 1); // 设置下拉列表显示为当前年 
			    reSetDay(s_week, s_year, s_month-1,sel_day); // 调用函数Resetday 	
			}
			if(com.equals(c_next))      //日期文本框下一个日期方法,注释可参考上面,几乎一样
			{	
				int temp_str;
				int temp_end;
				int str_pos=-1;
				int end_pos=-1;
				int len=0;
				int day_count[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
				String l_year=null;
				String l_month=null;
				String l_day=null;
				
				String field=text.getText();
				len=field.length();
				str_pos=field.indexOf('-');
				end_pos=field.lastIndexOf('-');
				temp_str=str;
				temp_end=end;
				str=text.getSelectionStart();
				end=text.getSelectionEnd();
				
				if(str==end)
				{
					str=temp_str;
					end=temp_end;
				}
				l_month=field.substring(0, str_pos);
				l_day=field.substring(str_pos+1,end_pos);
				l_year=field.substring(end_pos+1,len);
				
				System.out.println(str+"---str and end---"+end);
				System.out.println(str_pos+"********"+end_pos);				
				
				Integer s_year=new Integer(l_year);
				Integer s_month=new Integer(l_month);
				Integer s_day=new Integer(l_day);
				System.out.println(s_month+"%%%%%"+s_day+"%%%%%%%"+s_year);
				if(s_year%4==0)
                   day_count[2]=29;	
				
				if(str==0)
				{
					s_month+=1;
					if(s_month>12)
					{
						s_month=1;
						s_year+=1;
						if(s_year>10000)
							s_year=100000;
					}
				}
				if(1<str && str<4)
				{
					s_day+=1;
					if(s_day>day_count[s_month])
					{
						s_month+=1;
						if(s_month>12)
						{
							s_month=1;
							s_year+=1;
							if(s_year%4==0)
								day_count[2]=29;
							else
								day_count[2]=28;
							if(s_year>100000)
								s_year=100000;
						}
						s_day=1;
					}
					sel_day=String.valueOf(s_day);
				}
				if(str>=4)
				{
					s_year+=1;
					if(s_year>100000)
						s_year=100000;
				}
				
				System.out.println(s_month+"%%%%%"+s_day+"%%%%%%%"+s_year);//控制台输出信息
				
				String m_date=s_month+"-"+s_day+"-"+s_year;
			    text.setText(m_date);
			    int s_week = use(s_year, s_month-1); // 调用函数use,得到星期几 
			    com1.setSelectedIndex(s_year - 1); // 设置下拉列表显示为当前年 
			    com2.setSelectedIndex(s_month - 1); // 设置下拉列表显示为当前年 
			    reSetDay(s_week, s_year, s_month-1,sel_day); // 调用函数Resetday 	
			}
		}
	} 
	
	class selectAction implements ActionListener    //选择日期
	{ 
		public void actionPerformed(ActionEvent arg0) 
		{ 
			String mpos=arg0.getActionCommand();//获得被点击的按钮的值
			
			System.out.println(mpos);
			String temp=sel_day;
			System.out.println("temp is------"+temp);//控制台输出调试信息
			
			
			sel_day=mpos;//存储选择的日期
			
			if(!mpos.equals(""))//修改选中的日期的颜色
			{
			  
			  for(int i=0;i<49;i++)
			  {
				  if(datebutton[i].getText().equals(temp))
				  {
					  datebutton[i].setForeground(Color.BLACK);
				  }
				  if(datebutton[i].getText().equals(mpos))
				  {
					  datebutton[i].setForeground(Color.RED);					  
				  }							 
			  }
			}
		}
	}
	
	class mouseclick extends MouseAdapter     //鼠标双击事件监听器
	{
		public void mouseClicked(MouseEvent e)
        {
          if(e.getClickCount() == 2)//实现双击
          {    
        	  System.out.println("mouse double click");
        	 
			  String getdate=null;
			  getdate=getSelectData();			  
			  System.out.println("选择的日期是 \t"+getdate);
			  if(!sel_day.equals(""))
			  {
				  showDate(getdate);//返回选择的时间
			  }
          }  
        }
	}
	
	public static void main(String[] args)     //主函数,生成主架构
	{ 
		JFrame.setDefaultLookAndFeelDecorated(true); 
		new MainFrame(); 
	} 
} 

⌨️ 快捷键说明

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