gpt4 book ai didi

java - 为什么使用 Gui 输入和监听器方法会出现 Null 指针异常?

转载 作者:行者123 更新时间:2023-12-03 21:29:38 24 4
gpt4 key购买 nike

我是 Java 的新手,我试图让用户通过 Gui 输入员工的名字和姓氏,当他们按下提交按钮时,它会激活监听器方法并允许收集输入的值并将其放入系统内存

我的问题是,当我输入名字时,它工作得很好,但当我输入姓氏时,它根本不起作用,我按下提交按钮,整个事情变得疯狂,错误是空指针异常“AWT 事件队列”。我看不出发生这种情况的原因请帮助

这是错误发生的代码

lName = employeeDetails2.getText();  (located closer to the end of the code)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class guiEmployee1 extends JFrame
{

private String fName;
private String lName;
private String gender;
private String payLevel;
private String empIDnumber;
// private int dPayLevel;

JTextField employeeDetails1;
JTextField employeeDetails2;
JTextField employeeDetails3;
JTextField employeeDetails4;
JTextField employeeDetails5;

public guiEmployee1()
{
JButton submit;
JButton b1;

System.out.println("cabanas");

JFrame frame = new JFrame();
employeeDetails1 = new JTextField(10);

JTextField employeeDetails2;
employeeDetails2 = new JTextField(10);




frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(320, 75));
frame.setTitle("Employee Details");

frame.setLayout(new FlowLayout());

frame.add(new JLabel("Please enter Employees first Name: "));
frame.add(employeeDetails1);
ButtonListenerFirstName listener = new ButtonListenerFirstName();

frame.add(new JLabel("Please enter Employees Last Name: "));
frame.add(employeeDetails2);
ButtonListenerLastName listener1 = new ButtonListenerLastName();




b1 = new JButton ("Submit");

b1.addActionListener(listener);
b1.addActionListener(listener1);


frame.add(b1);
frame.pack();
frame.setSize(300,300);
frame.setVisible(true);



}


public class ButtonListenerFirstName implements ActionListener
{
public void actionPerformed (ActionEvent e )
{
fName = employeeDetails1.getText();
System.out.println("and This is the employes first name :"+ fName);
}
}

public class ButtonListenerLastName implements ActionListener
{
public void actionPerformed (ActionEvent e )
{
lName = employeeDetails2.getText();
System.out.println("and This is the employes Last name :"+ lName);
}
}




public static Department getDepartment()
{
return null;
}


}


Thanks

最佳答案

唯一 在该行上为 null 并导致该异常的变量是 employeeDetails2,因此您必须回顾代码以查看是否以及在何处将对象分配给该变量。在执行此操作时,您会看到您在 guiEmployee1 类的构造函数中将一个对象分配给了 employeeDetails2,但紧接着您在构造函数的上方重新声明了该变量。因此,它是本地 employeeDetails2 变量被分配了一个对象,而不是从未初始化的类字段。这称为变量阴影。解决方案是不要在构造函数中重新声明变量。

即:

public guiEmployee1()
{
JButton submit;
JButton b1;

System.out.println("cabanas");

JFrame frame = new JFrame();
employeeDetails1 = new JTextField(10);

// JTextField employeeDetails2; ***** comment out this line *****
employeeDetails2 = new JTextField(10);

接下来,您需要重命名您的变量,以便您的代码成为“ self 注释”。换句话说,为什么不给变量起一个像 employeeDetailsX 这样的通用名称,为什么不把它命名为 lastNameField,在它前面的是 firstNameField,然后将“b1”按钮命名为 submitButton?这样在调试您的代码时,您就会确切地知道它应该做什么?

关于java - 为什么使用 Gui 输入和监听器方法会出现 Null 指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com