public void actionPerformed(ActionEvent e) {
year = Integer.parseInt(t1.getText());
t1.setText("");
if (year < 1) {
txa.setText("year canot be less than 1!");
return;
}
weekDay = (int) firstDayOfYear(year);
txa.append(" Calendar " + year + "\n");
for (int i = 1; i <= 12; i++) {
printMonth(i);
//System.out.println("\n");
txa.append("\n");
}
}
private void printMonth(int m) {
printHead(m);
int days = daysOfMonth(m);
for (int i = 1; i <= days; i++) {
if (i < 10) {
//System.out.print(" " + i);
txa.append(" " + i);
} else {
//System.out.print(" " + i);
txa.append(" " + i);
}
txa.append("========================================\n");
txa.append(" *日 一 二 三 四 五 六* |" + m + "月\n");
txa.append("========================================\n");
for (int i = 0; i < weekDay; i++) {
//System.out.print(" ");// 控制第一行
txa.append(" ");
}
}
private long firstDayOfYear(int y) {
long n;
n = y * 365;
for (int i = 1; i < y; i++) {
if (isLeapYear(i))
n += 1;
}
return n %= 7;
}
private int daysOfMonth(int m) {
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (isLeapYear(year))
return 29;
else
return 28;
}
return weekDay;
}
public static void main(String[] args) {
LeapYearTest test = new LeapYearTest();
test.setVisible(true);
}
}
详细参考http://community.csdn.net/Expert/topic/5383/5383638.xml?temp=.857815