JAVA小白求大佬解答,想实现按下按钮3可以显示下一个月日历,再按,再显示下下个月的,Q904543493

package xxx1;


import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class  zzzz {

static JFrame f = new JFrame("日历查询");
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

File fpath=new File("c:/text111/");
fpath.mkdir();
final File f1=new File(fpath,"new.txt");
f1.createNewFile();
f.setSize(500, 500);
f.setLocation(500,500);
f.setLayout(null);
Container c1 = f.getContentPane();
JPanel p1 = new JPanel();
p1.setSize(200,200);
p1.setLocation(100, 0);
JLabel l1 = new JLabel("请输入年份");
final JTextField t1 = new JTextField(10);
JLabel l2 = new JLabel("请输入月份");
final JTextField t2 = new JTextField(10);
JButton b1 = new JButton("确定");
JButton b2=new JButton("显示");
    p1.add(l1);
p1.add(t1);
p1.add(l2);
p1.add(t2);
p1.add(b1);
p1.add(b2);
c1.add(p1);
f.setVisible(true);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String y=t1.getText();
String m=t2.getText();
int year=Integer.parseInt(y);
int month=Integer.parseInt(m);
int sum = 0;
  for (int i=1900;i<year;i++){
   if(i%4==0 && i%100!=0 || i%400==0){          //算  瑞年和 平年
    sum+=366;                                //瑞年一年366天
     }else{
    sum+=365;         //平年一年365天
   }
  }
  for (int i = 1;i<month;i++){            
   if(i==2){ // 二月份的 
    if (year%4==0 && year%100!=0 || year%400==0){ 
     sum+=29;        
    }else{
     sum+=28;
    }
   
   }else if
     (i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份  每月 30天
     sum+=30;
    }else{
     sum+=31;                                        //剩下的都是31天
    }
   }
  sum+=1;
 
  int pi = 0;
  for (int i = 1;i<=month;i++){            
   if(i==2){ // 二月份的 
    if (year%4==0 && year%100!=0 || year%400==0){ 
     pi=29;        
    }else{
     pi=28;
    }
   
   }else if
     (i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份  每月 30天
     pi=30;
    }else{
     pi=31;                                        //剩下的都是31天
    }
   }
int wekeday = sum %7;
   System.out.println("日\t 一\t 二\t 三\t 四\t 五\t 六\t");  //打印日历前面的 星期
   for(int i =1;i<=wekeday;i++){
    System.out.print("\t"); 
   }for(int i=1;i<=pi;i++){
    if (sum%7==6){
     System.out.print(i+"\n");
    }else{
     System.out.print(i+"\t");
    }
    sum++;

   }

}

}

);

b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
closeThis();
JFrame f2=new JFrame("日历");
JButton b3=new JButton("下一月");
JPanel p2 = new JPanel();
p2.add(b3);
f2.setSize(1000, 1000);
f2.setLocation(500,500);
p2.setLocation(100,200);
final JTextArea ta1 = new JTextArea(10,30);
p2.add(ta1);
String s="c:/text111/new.txt";   
try{
      
      FileInputStream fis=new FileInputStream(s);     
      byte[] b=new byte[101024];
      int i=fis.read(b);
      ta1.append(new String(b,0,i));      
      fis.close();
     }catch(Exception ex){
      ex.printStackTrace();
     }
f1.delete();
    f2.add(p2);
    f2.setVisible(true);
b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){

ta1.setText(null);
   
int sum = 0;
String y=t1.getText();
int year=Integer.parseInt(y);

String m=t2.getText();
int month=Integer.parseInt(m)+1;


System.out.print("");
System.out.println("");
  for (int i=1900;i<year;i++){
   if(i%4==0 && i%100!=0 || i%400==0){          //算  瑞年和 平年
    sum+=366;                                //瑞年一年366天
     }else{
    sum+=365;         //平年一年365天
   }
  }
  for (int i = 1;i<month;i++){            
   if(i==2){ // 二月份的 
    if (year%4==0 && year%100!=0 || year%400==0){ 
     sum+=29;        
    }else{
     sum+=28;
    }
   
   }else if
     (i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份  每月 30天
     sum+=30;
    }else{
     sum+=31;                                        //剩下的都是31天
    }
   }
  sum+=1;
 
  int pi = 0;
  for (int i = 1;i<=month;i++){            
   if(i==2){ // 二月份的 
    if (year%4==0 && year%100!=0 || year%400==0){ 
     pi=29;        
    }else{
     pi=28;
    }
   
   }else if
     (i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份  每月 30天
     pi=30;
    }else{
     pi=31;                                        //剩下的都是31天
    }
   }
int wekeday = sum %7;
   System.out.println("日\t 一\t 二\t 三\t 四\t 五\t 六\t");  //打印日历前面的 星期
   for(int i =1;i<=wekeday;i++){
    System.out.print("\t"); 
   }for(int i=1;i<=pi;i++){
    if (sum%7==6){
     System.out.print(i+"\n");
    }else{
     System.out.print(i+"\t");
    }
    sum++;
      
   }
   
   String s="c:/text111/new.txt";   
   
try{
      
      FileInputStream fis=new FileInputStream(s);     
      byte[] b=new byte[101024];
      int i=fis.read(b);
      ta1.append(new String(b,0,i));      
      fis.close();
     }catch(Exception ex){
      ex.printStackTrace();
     }

}


}
);}
private void closeThis() {
// TODO Auto-generated method stub
f.dispose();
}
}
);

}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值