我的swing GUI中有例外

时间:2017-12-10 19:08:54

标签: java swing

我的应用程序以许多例外开始。我能够弄清楚一些,但现在我被困在这个例外:

java.lang.NullPointerException
    at Asym.initialize(Asym.java:304)
    at Asym.<init>(Asym.java:45)
    at Asym$1.run(Asym.java:196)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "main" java.lang.NullPointerException
    at Asym.computethestuff(Asym.java:186)
    at Asym.main(Asym.java:205)

这是我的GUI代码(删除了我的方法)

import java.awt.EventQueue;
import javax.swing.JFrame;
import java.math.BigInteger;
import java.util.Random;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Asym {



    public JFrame frmRsa;
    private static JTextField pf;
    private static JTextField qf;
    private static JTextField nf;
    private static JTextField phif;
    public static JTextField mf;
    static JLabel dl;
    static JLabel rl;
    static JLabel el;
    static JLabel cl;
    static JLabel df;
    static JLabel ef;

    public Asym() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Asym window = new Asym();
                    window.frmRsa.setVisible(true);
                } catch (Exception e) {
                    System.out.println("Error with your swing");
                    e.printStackTrace();
                }
            }
        });

    }

    /**
     * Create the application.
     */

    private void initialize() {
        frmRsa = new JFrame();
        frmRsa.setTitle("RSA");
        frmRsa.setBounds(100, 100, 363, 735);
        frmRsa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmRsa.getContentPane().setLayout(null);

        JPanel panel = new JPanel();
        panel.setBorder(new LineBorder(new Color(0, 0, 0)));
        panel.setBounds(12, 70, 326, 146);
        frmRsa.getContentPane().add(panel);
        panel.setLayout(null);

        JLabel lblNewLabel = new JLabel("Generating two BIG prime numbers, P, and Q");
        lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblNewLabel.setBounds(12, 13, 314, 27);
        panel.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("P");
        lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblNewLabel_1.setBounds(12, 45, 18, 16);
        panel.add(lblNewLabel_1);

        JLabel lblNewLabel_2 = new JLabel("Q");
        lblNewLabel_2.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblNewLabel_2.setBounds(12, 74, 18, 16);
        panel.add(lblNewLabel_2);

        pf = new JTextField();
        pf.setBounds(36, 43, 283, 22);
        panel.add(pf);
        pf.setColumns(10);

        qf = new JTextField();
        qf.setColumns(10);
        qf.setBounds(36, 74, 283, 22);
        panel.add(qf);

        JButton btnGenerateNew = new JButton("Generate new");
        btnGenerateNew.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                generatePrimes();
            }
        });
        btnGenerateNew.setBounds(201, 108, 113, 25);
        panel.add(btnGenerateNew);

        JButton btnUseThesePrimes = new JButton("Use these primes");
        btnUseThesePrimes.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                computethestuff();
            }
        });
        btnUseThesePrimes.setBounds(46, 108, 142, 25);
        panel.add(btnUseThesePrimes);

        JPanel panel_1 = new JPanel();
        panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
        panel_1.setLayout(null);
        panel_1.setBounds(12, 229, 326, 107);
        frmRsa.getContentPane().add(panel_1);

        JLabel lblFromThePrimes = new JLabel("From the primes above, we get n, and Phi");
        lblFromThePrimes.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblFromThePrimes.setBounds(12, 13, 314, 27);
        panel_1.add(lblFromThePrimes);

        JLabel lblN = new JLabel("N");
        lblN.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblN.setBounds(12, 45, 18, 16);
        panel_1.add(lblN);

        JLabel lblPhi = new JLabel("Phi");
        lblPhi.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblPhi.setBounds(12, 74, 24, 16);
        panel_1.add(lblPhi);

        nf.setColumns(10);
        nf.setBounds(36, 43, 283, 22);
        panel_1.add(nf);

        phif.setColumns(10);
        phif.setBounds(36, 74, 283, 22);
        panel_1.add(phif);

        JLabel lblNewLabel_6 = new JLabel("");
        lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblNewLabel_6.setBounds(51, 46, 263, 16);
        panel_1.add(lblNewLabel_6);

        JLabel label = new JLabel("");
        label.setFont(new Font("Tahoma", Font.PLAIN, 15));
        label.setBounds(48, 75, 266, 16);
        panel_1.add(label);

        JPanel panel_2 = new JPanel();
        panel_2.setBorder(new LineBorder(new Color(0, 0, 0)));
        panel_2.setLayout(null);
        panel_2.setBounds(12, 349, 326, 107);
        frmRsa.getContentPane().add(panel_2);

        JLabel lblAndFinallyWe = new JLabel("And finally we got the keys");
        lblAndFinallyWe.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblAndFinallyWe.setBounds(12, 13, 314, 27);
        panel_2.add(lblAndFinallyWe);

        JLabel lblE = new JLabel("e");
        lblE.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblE.setBounds(12, 45, 18, 16);
        panel_2.add(lblE);

        JLabel lblD = new JLabel("d");

        lblD.setFont(new Font("Tahoma", Font.BOLD, 15));
        lblD.setBounds(12, 74, 18, 16);
        panel_2.add(lblD);

        ef = new JLabel("");
        ef.setFont(new Font("Tahoma", Font.PLAIN, 15));
        ef.setBounds(51, 45, 263, 16);
        panel_2.add(ef);

        df = new JLabel("");
        df.setFont(new Font("Tahoma", Font.PLAIN, 15));
        df.setBounds(48, 74, 266, 16);
        panel_2.add(df);

        JLabel lblNewLabel_3 = new JLabel("<html>Asyemmetric Encryption\r\n<br>using RSA Algorithm</html>");
        lblNewLabel_3.setHorizontalAlignment(SwingConstants.CENTER);
        lblNewLabel_3.setFont(new Font("Tahoma", Font.BOLD, 16));
        lblNewLabel_3.setBounds(12, 13, 321, 44);
        frmRsa.getContentPane().add(lblNewLabel_3);

        JPanel panel_3 = new JPanel();
        panel_3.setBorder(new LineBorder(new Color(0, 0, 0)));
        panel_3.setLayout(null);
        panel_3.setBounds(12, 466, 326, 107);
        frmRsa.getContentPane().add(panel_3);

        JLabel lblEnterYourSecret = new JLabel("Enter your secret message here");
        lblEnterYourSecret.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblEnterYourSecret.setBounds(12, 13, 314, 27);
        panel_3.add(lblEnterYourSecret);

        mf = new JTextField();
        mf.setColumns(10);
        mf.setBounds(36, 43, 283, 22);
        panel_3.add(mf);

        JButton btnAndHitThis = new JButton("And hit this magic button");
        btnAndHitThis.setBounds(130, 78, 184, 25);
        panel_3.add(btnAndHitThis);

        JPanel panel_4 = new JPanel();
        panel_4.setBounds(12, 586, 321, 94);
        frmRsa.getContentPane().add(panel_4);
        panel_4.setLayout(null);

        JLabel lblNewLabel_4 = new JLabel("Ciphered");
        lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblNewLabel_4.setBounds(8, 5, 77, 16);
        panel_4.add(lblNewLabel_4);

        JLabel lblNewLabel_5 = new JLabel("Decrypted");
        lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblNewLabel_5.setBounds(8, 46, 77, 16);
        panel_4.add(lblNewLabel_5);

        cl = new JLabel("");
        cl.setFont(new Font("Tahoma", Font.PLAIN, 15));
        cl.setBounds(97, 5, 204, 16);
        panel_4.add(cl);

        dl = new JLabel("");
        dl.setFont(new Font("Tahoma", Font.PLAIN, 15));
        dl.setBounds(97, 46, 204, 16);
        panel_4.add(dl);

        rl = new JLabel("");

        rl.setFont(new Font("Tahoma", Font.PLAIN, 15));
        rl.setBounds(97, 65, 204, 16);
        panel_4.add(rl);

        JLabel label_6 = new JLabel("");
        label_6.setFont(new Font("Tahoma", Font.PLAIN, 15));
        label_6.setBounds(313, 13, 0, 0);
        panel_4.add(label_6);

        JLabel lblEncrypted = new JLabel("Encrypted");
        lblEncrypted.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblEncrypted.setBounds(8, 26, 77, 16);
        panel_4.add(lblEncrypted);

        JLabel lblRestored = new JLabel("Restored");
        lblRestored.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lblRestored.setBounds(8, 65, 77, 16);
        panel_4.add(lblRestored);

        el = new JLabel("");
        el.setFont(new Font("Tahoma", Font.PLAIN, 15));
        el.setBounds(97, 26, 204, 16);
        panel_4.add(el);

        JLabel label_7 = new JLabel("");
        label_7.setFont(new Font("Tahoma", Font.PLAIN, 15));
        label_7.setBounds(252, 34, 0, 0);
        panel_4.add(label_7);

    }
}

手动重新定位了一些内容,因为我认为我需要。就像将jLabel(dl,rl,el,cl,df,ef)移动到乞讨一样。

感谢任何信息!

0 个答案:

没有答案