Java 为什么我得到一个NullPointerException,却没有显示我添加的组件?
下面,您将看到我收到的错误消息。输出仅显示Java 为什么我得到一个NullPointerException,却没有显示我添加的组件?,java,nullpointerexception,Java,Nullpointerexception,下面,您将看到我收到的错误消息。输出仅显示JFrame,不显示任何内容 线程“main”java.lang.NullPointerException中的异常 位于java.awt.Container.addImpl(Container.java:1043) 在java.awt.Container.add处(Container.java:363) 在gui上。(gui.java:37) 位于gui.main(gui.java:15) Java结果:1 代码如下: import javax.swi
JFrame
,不显示任何内容
线程“main”java.lang.NullPointerException中的异常
位于java.awt.Container.addImpl(Container.java:1043)
在java.awt.Container.add处(Container.java:363)
在gui上。(gui.java:37)
位于gui.main(gui.java:15)
Java结果: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
以外的值,您可以设置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);
命名您的类
Gui
或Gui
,而不是Gui
。。。或者更好:RSAEncryptionFrame
…可以工作,但只显示没有内容的窗口。我添加到JPanel并设置为border的组件nothing.work,但只显示没有内容的窗口。我添加到JPanel并设置为border work Nothing的组件实际上需要添加到gui
方法中,因为p1
直到该方法完成一半才构建。您运行了它吗?我确实这样做了,但可能是我意外地切换了其他东西。实际上,nvm,gui
是构造函数。(这个名字欺骗了我。)