繁体   English   中英

为什么我收到NullPointerException却不显示添加的组件?

[英]Why am I getting a NullPointerException and no display the component i added?

在下面,您会找到我收到的错误消息。 输出仅显示没有内容的JFrame

Exception in thread "main" java.lang.NullPointerException
  at java.awt.Container.addImpl(Container.java:1043)
  at java.awt.Container.add(Container.java:363)
  at gui.<init>(gui.java:37)
  at gui.main(gui.java:15)
Java Result: 1

代码如下:

import javax.swing.*;
import java.awt.*;

public class gui extends JFrame {
    JPanel p1;
    JTextField tf1,tf2,tf3,tf4;
    JLabel lbl1,lbl2,lbl3,lbl5,lbl6,lbl7,lbl8,lbl9,lbl10;
    JTextArea txtMessage;
    JButton b1,b2,b3,b4,b5;

    public static void main(String [] args) {
        gui f = new gui();
        f.setTitle("RSA.");
        f.setVisible(true);
        f.setSize(700,500);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public gui() {
        lbl1 = new JLabel("Enter first prime number : ");
        lbl2 = new JLabel("Enter second prime number: ");
        lbl3 = new JLabel("Enter the message to be send : ");
        tf1 = new JTextField(15);
        tf2 = new JTextField(15);
        txtMessage = new JTextArea("Please enter",5,20);
        p1 = new JPanel();
        p1.add(lbl1);
        p1.add(tf1);
        p1.add(lbl2);
        p1.add(tf2);
        p1.add(lbl3);
        p1.add(txtMessage);

    p1.setLayout(new GridLayout(3,2));
    p1.add(lbl1);
    p1.add(tf1);
    p1.add(lbl2);
    p1.add(tf2);
    p1.add(lbl3);
    p1.add(txtMessage);
    }
}

感谢为我提供解决方案的人。谢谢编辑后,输出如下所示: 在此处输入图片说明

lbl3永远不会设置为null以外的null ,而lbl2设置两次:

lbl2=new JLabel("Enter second prime number: ");
lbl2=new JLabel("Enter the message to be send : ");

替换为

lbl2=new JLabel("Enter second prime number: ");
lbl3=new JLabel("Enter the message to be send : ");

您没有在gui的构造函数中初始化lbl3 我猜这是一个错字-您有两行初始化lbl2

lbl2=new JLabel("Enter second prime number: ");
lbl2=new JLabel("Enter the message to be send : ");

只需将第二个更改为lbl3 ,就可以了:

lbl2=new JLabel("Enter second prime number: ");
lbl3=new JLabel("Enter the message to be send : "); // here

您需要在构造函数中添加以下行:

this.add(p1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM