📄 calendarfrm.java
字号:
}
String showDateTime = year + "年" + month + "月" + date + "日" + " 星期"+xingqi;
this.txtShowDayTime.setText(showDateTime);
//设置月份下拉框的默认选项,既选择当前月份为默认选项
this.cboMonth.setSelectedIndex(Integer.parseInt(month) - 1);
spinDate.setValue(new Integer(year));
// System.out.println(year + " " + month + " " + date); //测试截取当前日期
//调用计算星期的方法
int day = getDay(year, month);
// System.out.println("1号是星期:" + day); //测试输出当月1号的星期数
//调用计算日期的方法
int days = getMonthDays(year, month);
//调用显示日历的方法
showCalendar(day, days, Day);
}
//得到某年的某月是星期几
public int getDay(String ye, String mon) {
int year, month, date = 1, num = 0, xingqi;
year = Integer.parseInt(ye);
month = Integer.parseInt(mon);
/*输入闰年时的情况*/
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { //判断是不是闰年
if (month == 3 || month == 4 || month == 5 || month == 6 ||
month == 7 || month == 8 || month == 10 || month == 12) {
num = (month - 1) * 30 + date + month / 2 - 1;
} else if (month == 1) {
num = (month - 1) * 30 + date;
}
else if (month == 9 || month == 11) {
num = (month - 1) * 30 + date + month / 2 - 1 + 1;
} else if (month == 2) {
num = (month - 1) * 30 + date + 1;
}
}
/*输出平年时的情况*/
/*num 是某年某月某日到用户所要查询日期之间的天数*/
else {
if ((month >= 3 && month < 8) || month == 10 || month == 12) {
num = (month - 1) * 30 + date + month / 2 - 2;
} else if (month == 9 || month == 11) {
num = (month - 1) * 30 + date + month / 2 - 2 + 1;
} else if (month == 1) {
num = (month - 1) * 30 + date;
} else if (month == 2) {
num = (month - 1) * 30 + date + 1;
}
}
//计算星期几
xingqi = ((year - 1) + (year - 1) / 4 + (year - 1) / 100 +
(year - 1) / 400 + num + 2) % 7;
if (year <= 2000) {
xingqi += 2;
}
return xingqi;
}
//得到每个月的天数,ye代表年份,mon代表月份
public int getMonthDays(String ye, String mon) {
int year, month, days = 0;
year = Integer.parseInt(ye);
month = Integer.parseInt(mon);
if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) &&
month == 2) {
days = 29;
} else if (month == 2) {
days = 28;
} else if (month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12) {
days = 31;
} else {
days = 30;
}
return days;
}
//day是当月一号星期几,days代表当月天数
public void showCalendar(int day, int days, int Day) {
dmt = new DefaultTableModel();
dmt.addColumn("日");
dmt.addColumn("一");
dmt.addColumn("二");
dmt.addColumn("三");
dmt.addColumn("四");
dmt.addColumn("五");
dmt.addColumn("六");
this.tblCalendar.setModel(dmt);
//date代表每月的一号
int date = 1;
for (int row = 0; row < 6; row++) {
boolean flag = false;
Vector v = new Vector();
for (int col = 0; col < 7; col++) {
if (row == 0 && col < day) { //打印第一行的空格
v.add("");
continue;
}
if (row == 0 && col >= day) { //从一号是星期几开始,添加日期
v.add("" + date);
date++;
continue;
}
v.add("" + date);
//设置当日期等于当月的天数是退出循环
if (date == days) {
flag = true;
break;
}
date++;
}
//添加表格模型列
dmt.addRow(v);
if (flag == true) {
break;
}
}
//模型添加到表格中
this.tblCalendar.setModel(dmt);
}
public void showCalendarNext() {
int monthIndex = this.cboMonth.getSelectedIndex();
String year = this.spinDate.getValue().toString(); //得到用户选择的年份年份
String month = ""; //得到用户选择的月份
switch (monthIndex) {
case 0:
month = "01";
break;
case 1:
month = "02";
break;
case 2:
month = "03";
break;
case 3:
month = "04";
break;
case 4:
month = "05";
break;
case 5:
month = "06";
break;
case 6:
month = "07";
break;
case 7:
month = "08";
break;
case 8:
month = "09";
break;
case 9:
month = "10";
break;
case 10:
month = "11";
break;
case 11:
month = "12";
break;
}
//计算当月1号是星期几
int day = getDay(year, month);
//计算当月有多少天
int days = getMonthDays(year, month);
Date cal = new Date();
int Day = cal.getDay();
//显示拥护选择的月份的日历;
showCalendar(day, days, Day);
}
//当月份下拉框选乡发生改变 的时候
public void cboMonth_itemStateChanged(ItemEvent e) {
showCalendarNext();
}
public void spinDate_stateChanged(ChangeEvent e) {
showCalendarNext();
}
public void btnOK_actionPerformed(ActionEvent e) {
this.dispose();
}
}
class CalendarFrm_btnOK_actionAdapter implements ActionListener {
private CalendarFrm adaptee;
CalendarFrm_btnOK_actionAdapter(CalendarFrm adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnOK_actionPerformed(e);
}
}
class CalendarFrm_cboMonth_itemAdapter implements ItemListener {
private CalendarFrm adaptee;
CalendarFrm_cboMonth_itemAdapter(CalendarFrm adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.cboMonth_itemStateChanged(e);
}
}
class CalendarFrm_spinDate_changeAdapter implements ChangeListener {
private CalendarFrm adaptee;
CalendarFrm_spinDate_changeAdapter(CalendarFrm adaptee) {
this.adaptee = adaptee;
}
public void stateChanged(ChangeEvent e) {
adaptee.spinDate_stateChanged(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -