各位高手来帮个忙 我第一次做java的图形界面 用netbeans的

时间:2021-01-26 20:48:44
import java.io.*; 
import java.security.*; 
import java.security.cert.*; 
import java.util.*; 
import java.math.*; 
import sun.security.x509.*; 
public class wSignCert extends javax.swing.JFrame { 
     private void initComponents() { 
        jLabel1 = new javax.swing.JLabel(); 
        jPasswordField1 = new javax.swing.JPasswordField(); 
        jButton1 = new javax.swing.JButton(); 
        jButton2 = new javax.swing.JButton(); 
        jTextField1 = new javax.swing.JTextField(); 
        jLabel2 = new javax.swing.JLabel(); 
        jPasswordField2 = new javax.swing.JPasswordField(); 
        jLabel3 = new javax.swing.JLabel(); 

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
        jLabel1.setText("\u5bc6\u94a5\u5e93\u5bc6\u7801"); 

        jButton1.setText("\u786e\u5b9a"); 

        jButton2.setText("\u7b7e\u540d"); 
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() { 
            public void mouseClicked(java.awt.event.MouseEvent evt) { 
                sign(evt); 
            } 
        }); 

        jLabel2.setText("ca\u5bc6\u7801"); 

        jLabel3.setText("\u6587\u4ef6\u540d"); 

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
        getContentPane().setLayout(layout); 
        layout.setHorizontalGroup( 
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
            .addGroup(layout.createSequentialGroup() 
                .addGap(20, 20, 20) 
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                    .addGroup(layout.createSequentialGroup() 
                        .addComponent(jLabel3) 
                        .addGap(17, 17, 17) 
                        .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)) 
                    .addGroup(layout.createSequentialGroup() 
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE) 
                            .addComponent(jLabel2)) 
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                            .addComponent(jPasswordField2, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE) 
                            .addComponent(jPasswordField1, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE)))) 
                .addGap(149, 149, 149) 
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING, 0, 0, Short.MAX_VALUE) 
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)) 
                .addContainerGap()) 
        ); 
        layout.setVerticalGroup( 
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
            .addGroup(layout.createSequentialGroup() 
                .addContainerGap() 
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                    .addComponent(jLabel3) 
                    .addComponent(jTextField1)) 
                .addGap(24, 24, 24) 
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                    .addComponent(jButton1) 
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) 
                    .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                    .addComponent(jLabel2) 
                    .addComponent(jPasswordField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 89, Short.MAX_VALUE) 
                .addComponent(jButton2) 
                .addGap(73, 73, 73)) 
        ); 
        pack(); 
    }
    private void sign(java.awt.event.MouseEvent evt) {                        
        try{
         this.signcert();
        }catch( Exception ex){
           ex.printStackTrace();
        }
    }                      
   private void signcert() throws Exception{
char[] storepass=jPasswordField1.getText().toCharArray(); 
char[] cakeypass=jPasswordField2.getText().toCharArray(); 
String alias="CA"; 
String name="mykeystore"; 
String ar=jTextField1.getText(); 
//从密钥库读取CA的证书 
FileInputStream in=new FileInputStream(name); 
        KeyStore ks=KeyStore.getInstance("JKS"); 
        ks.load(in,storepass); 
        java.security.cert.Certificate c1=ks.getCertificate(alias); 
//从密钥库读取CA的私钥 
PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass); 
in.close(); 
//从CA的证书中提取签发者信息 
byte[] encod1=c1.getEncoded(); 
X509CertImpl cimp1=new X509CertImpl(encod1);  
X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 
X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); 
//获取待签发的证书 
        CertificateFactory cf=CertificateFactory.getInstance("X.509"); 
        FileInputStream in2=new FileInputStream(ar); 
        java.security.cert.Certificate c2=cf.generateCertificate(in2); 
        in2.close(); 
//从待签发的证书提取证书信息 
        byte[] encod2=c2.getEncoded(); 
        X509CertImpl cimp2=new X509CertImpl(encod2);      
        X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 
//设置新证书有效期 
        Date begindate =new Date(); 
        //3000 day 
        Date enddate =new Date(begindate.getTime()+3000*24*60*60*1000L);       
        CertificateValidity cv=new CertificateValidity(begindate,enddate); 
        cinfo2.set(X509CertInfo.VALIDITY,cv); 
        int sn=(int)(begindate.getTime()/1000); 
        CertificateSerialNumber csn=new CertificateSerialNumber(sn); 
        cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn); 
        cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer); 
        AlgorithmId algorithm = new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid); 
        cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM, algorithm); 
        X509CertImpl newcert=new X509CertImpl(cinfo2); 
        newcert.sign(caprk,"MD5WithRSA"); 
        System.out.println(newcert); 
        ks.setCertificateEntry("A_signed", newcert) ; 
        FileOutputStream out=new FileOutputStream("newstore"); 
        ks.store(out,"newpass".toCharArray()); 
        out.close();  }     
        public static void main(String args[]) { 
        java.awt.EventQueue.invokeLater(new Runnable() { 
            public void run() { 
                new wSignCert().setVisible(true); 
            } 
        }); 
    } 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JPasswordField jPasswordField1; 
    private javax.swing.JPasswordField jPasswordField2; 
    private javax.swing.JTextField jTextField1;     

这是我做的一个数字签名系统的部分模块 我本来在设计初期以signcert为主类设计(没有界面 在cmd里面打命令运行的那种)成功后我决定加一个界面 于是有了上面的代码 现在我运行的时候出现了问题 就是我按botton按钮也就是运行红色部分的程序 但是就是没反应 请各位帮个忙

13 个解决方案

#1


我认真看了半天...可是没看清楚^^!,没有注SI

#2


俄 字节原因 注释删了一些。。。我重发

#3


不错,数字签名使用很广泛啊。
不过你一个人够吗?实验室有个项目做数字印章,还没头绪。
帮不了你。

#4


import java.io.*;
import java.security.cert.*;
import java.util.*;

public class CheckCertValid extends javax.swing.JFrame {
    
    /**
     * Creates new form CheckCertValid
     */
    public CheckCertValid() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
    private void initComponents() {
        jFrame1 = new javax.swing.JFrame();
        jFileChooser1 = new javax.swing.JFileChooser();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
        jFrame1.getContentPane().setLayout(jFrame1Layout);
        jFrame1Layout.setHorizontalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(24, Short.MAX_VALUE))
        );
        jFrame1Layout.setVerticalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });

        jLabel1.setText("\u8bc1\u4e66\u540d");

        jLabel2.setText("\u65e5\u671f");

        jLabel3.setText("\u5e74");

        jLabel4.setText("\u6708");

        jLabel5.setText("\u65e5");

        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        jButton2.setText("\u8ba4\u8bc1");

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(38, 38, 38)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel3)
                            .addComponent(jLabel4)
                            .addComponent(jLabel5))
                        .addGap(27, 27, 27)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextField4)
                            .addComponent(jTextField3)
                            .addComponent(jTextField2)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(16, 16, 16)
                                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(35, 35, 35)
                                .addComponent(jButton2)))))
                .addContainerGap(144, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(20, 20, 20)
                        .addComponent(jLabel2)
                        .addGap(23, 23, 23)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel3)
                            .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(23, 23, 23)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel4)
                            .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(29, 29, 29)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jButton2)))
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(46, 46, 46))
        );
        pack();
    }// </editor-fold>                        

#5


    private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
// TODO 将在此处添加您的处理代码:
       try{
         this.CheckCertValid();
        }catch( Exception ex){
           ex.printStackTrace();
        }

    }                                     
private void CheckCertValid() throws Exception{
        // TODO code application logic here
        CertificateFactory cf=CertificateFactory.getInstance("X.509");
        String file=jTextField1.getText();
        String year1=jTextField2.getText();
        String month1=jTextField3.getText();
        String day1=jTextField4.getText();
        FileInputStream in=new FileInputStream(file);
        java.security.cert.Certificate c=cf.generateCertificate(in);
        in.close();
        X509Certificate t=(X509Certificate) c;
//获取日期
        Calendar cld=Calendar.getInstance();
        int year=Integer.parseInt(year1);
        int month=Integer.parseInt(month1)-1;  // as 0 is Jan
        int day=Integer.parseInt(day1);
        cld.set(year,month,day);
        Date d=cld.getTime();
        try{                                         //检验有效期
            t.checkValidity(d);
            jTextArea1.setText("OK");
        }catch(CertificateExpiredException e){   //过期
            jTextArea1.setText("Expired");
            jTextArea1.setText(e.getMessage());
        }
        catch(CertificateNotYetValidException e){   //尚未生效
            System.out.println("Too early");
            System.out.println(e.getMessage());
        }
        
    }
    
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
// TODO 将在此处添加您的处理代码:
         File f1 = new File("c:\\");  
        int result; 
        result = jFileChooser1.showOpenDialog(this); 
        if (result == jFileChooser1.APPROVE_OPTION) { 
            File file = jFileChooser1.getSelectedFile();
            String x=file.toString();
            jTextField1.setText(x);
        }
    }                                     
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CheckCertValid().setVisible(true);
            }
        });
    }
    
    // 变量声明 - 不进行修改                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JFrame jFrame1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // 变量声明结束                   
    
}
这个是另外的一个 用来验证证书有效期的 看起来方便点 问题都一样 就是在图形界面的时候按验证 不能运行

#6


我做的不复杂 稍微做一个 用来过大学的毕业设计的反正现在能用了(仅是cmd版本)我想做个图形界面 总是cmd打命令 我自己也受不了 到时候演示的话很麻烦

#7


你自己调试一下哦.应该没有问题?

#8


我也知道的。。但是就是按了botton没反应 郁闷着呢,,

#9


那你点button2有反映吗?你没给button1加监听器啊

#10


不好意思,看错了,那就是里面参数不对了

#11


学习....

#12


。。。。我是白痴。。我把监听设到form了。。。 不过其他算法出了问题。。不管怎么验证都是ok 晕。。。我再去做 先帮你揭帖了 谢谢你 我记得上次也是你帮的忙

#13


别客气,我一开始以为你说的那个button是button2,后来看button2加监听器了,发现button1没有,呵呵

#1


我认真看了半天...可是没看清楚^^!,没有注SI

#2


俄 字节原因 注释删了一些。。。我重发

#3


不错,数字签名使用很广泛啊。
不过你一个人够吗?实验室有个项目做数字印章,还没头绪。
帮不了你。

#4


import java.io.*;
import java.security.cert.*;
import java.util.*;

public class CheckCertValid extends javax.swing.JFrame {
    
    /**
     * Creates new form CheckCertValid
     */
    public CheckCertValid() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
    private void initComponents() {
        jFrame1 = new javax.swing.JFrame();
        jFileChooser1 = new javax.swing.JFileChooser();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
        jFrame1.getContentPane().setLayout(jFrame1Layout);
        jFrame1Layout.setHorizontalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(24, Short.MAX_VALUE))
        );
        jFrame1Layout.setVerticalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });

        jLabel1.setText("\u8bc1\u4e66\u540d");

        jLabel2.setText("\u65e5\u671f");

        jLabel3.setText("\u5e74");

        jLabel4.setText("\u6708");

        jLabel5.setText("\u65e5");

        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        jButton2.setText("\u8ba4\u8bc1");

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(38, 38, 38)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel3)
                            .addComponent(jLabel4)
                            .addComponent(jLabel5))
                        .addGap(27, 27, 27)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextField4)
                            .addComponent(jTextField3)
                            .addComponent(jTextField2)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(16, 16, 16)
                                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(35, 35, 35)
                                .addComponent(jButton2)))))
                .addContainerGap(144, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(20, 20, 20)
                        .addComponent(jLabel2)
                        .addGap(23, 23, 23)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel3)
                            .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(23, 23, 23)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel4)
                            .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(29, 29, 29)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jButton2)))
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(46, 46, 46))
        );
        pack();
    }// </editor-fold>                        

#5


    private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
// TODO 将在此处添加您的处理代码:
       try{
         this.CheckCertValid();
        }catch( Exception ex){
           ex.printStackTrace();
        }

    }                                     
private void CheckCertValid() throws Exception{
        // TODO code application logic here
        CertificateFactory cf=CertificateFactory.getInstance("X.509");
        String file=jTextField1.getText();
        String year1=jTextField2.getText();
        String month1=jTextField3.getText();
        String day1=jTextField4.getText();
        FileInputStream in=new FileInputStream(file);
        java.security.cert.Certificate c=cf.generateCertificate(in);
        in.close();
        X509Certificate t=(X509Certificate) c;
//获取日期
        Calendar cld=Calendar.getInstance();
        int year=Integer.parseInt(year1);
        int month=Integer.parseInt(month1)-1;  // as 0 is Jan
        int day=Integer.parseInt(day1);
        cld.set(year,month,day);
        Date d=cld.getTime();
        try{                                         //检验有效期
            t.checkValidity(d);
            jTextArea1.setText("OK");
        }catch(CertificateExpiredException e){   //过期
            jTextArea1.setText("Expired");
            jTextArea1.setText(e.getMessage());
        }
        catch(CertificateNotYetValidException e){   //尚未生效
            System.out.println("Too early");
            System.out.println(e.getMessage());
        }
        
    }
    
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
// TODO 将在此处添加您的处理代码:
         File f1 = new File("c:\\");  
        int result; 
        result = jFileChooser1.showOpenDialog(this); 
        if (result == jFileChooser1.APPROVE_OPTION) { 
            File file = jFileChooser1.getSelectedFile();
            String x=file.toString();
            jTextField1.setText(x);
        }
    }                                     
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CheckCertValid().setVisible(true);
            }
        });
    }
    
    // 变量声明 - 不进行修改                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JFrame jFrame1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // 变量声明结束                   
    
}
这个是另外的一个 用来验证证书有效期的 看起来方便点 问题都一样 就是在图形界面的时候按验证 不能运行

#6


我做的不复杂 稍微做一个 用来过大学的毕业设计的反正现在能用了(仅是cmd版本)我想做个图形界面 总是cmd打命令 我自己也受不了 到时候演示的话很麻烦

#7


你自己调试一下哦.应该没有问题?

#8


我也知道的。。但是就是按了botton没反应 郁闷着呢,,

#9


那你点button2有反映吗?你没给button1加监听器啊

#10


不好意思,看错了,那就是里面参数不对了

#11


学习....

#12


。。。。我是白痴。。我把监听设到form了。。。 不过其他算法出了问题。。不管怎么验证都是ok 晕。。。我再去做 先帮你揭帖了 谢谢你 我记得上次也是你帮的忙

#13


别客气,我一开始以为你说的那个button是button2,后来看button2加监听器了,发现button1没有,呵呵