package cleader;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
class gui extends JFrame{
JLabel year,month;
JTextField years,months;
JTextArea receive;
JLabel [] label1=new JLabel[7];
JLabel [] label2=new JLabel[35];
JPanel aJPanel=new JPanel();
JPanel bJPanel=new JPanel();
JButton aButton;
monthday ss=new monthday();
gui(){
this.setTitle("万年历");
this.setBounds(50, 50, 800, 330);
this.setLayout(null);
this.add(bJPanel);
this.add(aJPanel);
init();
this.setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
year=new JLabel("年份:");
year.setBounds(25,5, 40, 30);
month=new JLabel("月份:");
month.setBounds(145,5, 40, 30);
years=new JTextField();
years.setBounds(60, 5, 70, 30);
months=new JTextField();
months.setBounds(180,5, 70, 30);
aButton=new JButton("确定");
aButton.setBounds(270, 5, 60, 30);
bJPanel.setBounds(0, 0, 400, 37);
bJPanel.setBackground(Color.blue);
bJPanel.setLayout(null);
bJPanel.add(year);
bJPanel.add(years);
bJPanel.add(months);
bJPanel.add(month);
bJPanel.add(aButton);
receive=new JTextArea();
receive.setBounds(0, 0, 800, 250);
aJPanel.setBounds(0, 38, 800, 250);
aJPanel.setBackground(Color.gray);
aJPanel.setLayout(null);
aJPanel.add(receive);
//aJPanel.add(receive);
aButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
receive.setText("");
String string1=years.getText();
String string2=months.getText();
int a=Integer.parseInt(string1);
int a2=Integer.parseInt(string2);
int b=ss.manyYear(a, a2);
int b2=ss.firstDays(ss.manyYear(a, b));
int b3=ss.monthdays(a2,a);
String [] log={"日","一","二","三","四","五","六"};
for(int i=0;i<7;i++){
if(i==6){
receive.append(log[i]);
}
else{
receive.append(log[i]+"\t");
}
}
receive.append("\r\n");
for (int k = 0; k < b2; k++) {
receive.append("\t");
}
for (int m = 1; m <= b3; m++) {
receive.append(m+"\t");
if ((b + m) % 7 == 6) {
receive.append("\n");
}
}
}
});
}
}
package cleader;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class monthday {
public static void main(String[] args) {
new gui();
}
//判断第一天是周几
public int firstDays(int manyDays){
int firstDayOfMonth = 0;
int temp = 1 + manyDays % 7 ;
if(temp == 7){
return firstDayOfMonth = 0;
}
else{
return firstDayOfMonth = temp;
}
}
//判断是否闰年
public static boolean isrun(int year){
if((year%4==0&&year%100!=0) || (year%400==0)){
return true;
}
return false;
}
//判断给定年份与1900年1月的距离天数
public int manyYear(int year,int month)
{
int flag=0;
int monthdays=0;
int manyYear=0;
int manyMonth=0;
int manyDays=0;
for(int i=1900;i<year;i++){
if(isrun(i)){
manyYear=manyYear+366;
}
else{
manyYear=manyYear+365;
}
}
for(int i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthdays = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthdays = 30;
break;
case 2:
if (isrun(year)) {
monthdays = 29;
} else {
monthdays= 28;
}
break;
default:
System.out.println("輸入的年份不正確");
}
if(i < month){
manyMonth = manyMonth + monthdays;
}
}
return manyDays=manyYear+manyMonth;
}
//判断月份天数
public int monthdays(int monthday,int year){
int flag=0;
int monthdays=0;
switch(monthday){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:flag=1;
break;
case 4:
case 6:
case 9:
case 11:flag=2;
break;
case 2:
if(isrun(year)){
flag=3;
}
else{
flag=4;
}
break;
default:
System.out.println("输入年份不正确");
}
if(flag==1){
return monthdays=31;
}
else if(flag==2){
return monthdays=30;
}else if(flag==3){
return monthdays=29;
}else{
return monthdays=28;
}
}
}