Rip*_*pIt 1 java swing nullpointerexception
这是我的程序界面的图片,只是为了简单解释我的问题.
所以程序从这个屏幕开始,第一步是编辑你的名字,点击编辑名称按钮,调用这个方法:
private void editName() {
NameLabel = new javax.swing.JLabel();
NameField = new javax.swing.JTextField();
Sumbit = new javax.swing.JButton();
Sumbit.addActionListener(this);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setAlwaysOnTop(true);
setType(java.awt.Window.Type.POPUP);
NameLabel.setText("Name:");
NameField.setText(name);
Sumbit.setText("Sumbit");
..location code..
Run Code Online (Sandbox Code Playgroud)
因此,您在弹出的文本字段中键入您的姓名,然后点击提交.然后我收到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at kraz.Kraz.game(Kraz.java:62)
at kraz.Kraz.actionPerformed(Kraz.java:186)
Run Code Online (Sandbox Code Playgroud)
第186行的actionPerformed是提交按钮:
else if (e.getSource() == Sumbit)
{
name = NameField.getText();
NameField.setText("" + name);
if (step == 1)
{
++step;
game();
}
}
Run Code Online (Sandbox Code Playgroud)
第62行是我调用game()方法的地方.第162行是下一个:
public void game() {
if (step == 1)
{
HealthBar.setValue(100);
}
else if (step == 2)
{
EventField.setText("Test");
ProgressBar.setValue(1);
}
}
Run Code Online (Sandbox Code Playgroud)
并且错误是我在EventField中设置文本时.
你有2个构造函数,一个调用initComponents()
,另一个没有:
public Kraz() {
initComponents();
setVisible(true);
game();
}
public Kraz(String check) {
if (check.equals("editName"))
{
editName();
setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
在main方法中,您调用new Kraz();
哪个是调用的方法initComponents()
.但是当你处理EditName事件时,你再次调用构造函数,但是另一个new Kraz("editName")
没有调用,initComponents()
所以EventField为null:
else if (e.getSource() == EditName)
{
new Kraz("editName");
}
Run Code Online (Sandbox Code Playgroud)
因此,在这个新实例中Kraz
,当您点击"提交"按钮时,新实例将处理事件和调用game()
,但没有任何字段已初始化.