📄 mainframe.java
字号:
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 + -