java - 在两个 GUI 类之间传输 String 时出现 NullPointerException

标签 java swing

我有一个表格,它是我的 editButton 操作方法:

    public void editAction() {
    if (table.getSelectedRow() > -1) {
        String oldFName = table.getValueAt(table.getSelectedRow(), 1).toString();
        String oldLName = table.getValueAt(table.getSelectedRow(), 2).toString();
        String oldGender = table.getValueAt(table.getSelectedRow(), 3).toString();
        System.out.println(oldFName);  // prints correctly
        System.out.println(oldLName);  // prints correctly
        System.out.println(oldGender);  // prints correctly

        AddUserDialog userDialog = new AddUserDialog(this, oldFName, oldLName, oldGender);
    } else JOptionPane.showMessageDialog(null, "Select A Row");
}

我的 AddUserDialog 类:

    public AddUserDialog(JFrame owner, String oldFname, String oldLname, String oldGender) {
    super(owner, "Edit User Information", true);
    fNameTf.setText(oldFname);     // First name text field
    lNameTf.setText(oldLname);     // Last name text field
    if (oldGender.equals("Male")) maleRb.setSelected(true);  //Male radio Button
    else femaleRb.setSelected(true);                   //Female radio Button

    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setLocation(400, 100);
    setVisible(true);
    pack();
}
...
}

现在,当我选择一行并单击编辑按钮时,旧的名字、旧的姓氏和旧的性别会正确打印在我的控制台上,但我的 IDE 说这里出现异常:

fNameTf.setText(oldFname);       // why is Null here?!

更新 第二种方式:

    public void editAction() {
    if (table.getSelectedRow() > -1) {
        String oldFName = table.getValueAt(table.getSelectedRow(), 1).toString();
        String oldLName = table.getValueAt(table.getSelectedRow(), 2).toString();
        String oldGender = table.getValueAt(table.getSelectedRow(), 3).toString();
        System.out.println(oldFName);  // prints correctly
        System.out.println(oldLName);  // prints correctly
        System.out.println(oldGender);  // prints correctly
        AddUserDialog userDialog = null;

        userDialog.setfName(oldFName);  // Why is null here?!
        userDialog.setlName(oldLName);
        userDialog.setGender(oldGender);
        userDialog = new AddUserDialog(this, userDialog.getfName(), userDialog.getlName(), userDialog.getGender());

    } else JOptionPane.showMessageDialog(null, "Select A Row");
}

现在 NullPointerException 在这里:

userDialog.setfName(oldFName);

如何解决这个问题?

最佳答案

fNameTfAddUserDialog 构造函数中为 null。您没有初始化 fNameTf

编辑:

AddUserDialog userDialog = new AddUserDialog(this, userDialog.getfName(), userDialog.getlName(), userDialog.getGender());

userDialog.setfName(oldFName);

关于java - 在两个 GUI 类之间传输 String 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803370/

相关文章:

java - 什么时候适合使用 EAR,什么时候你的应用应该在 WAR 中?

java - Swing 对话框渐变绘制问题

java - 调整 JTable 的高度

java - RGB 创建时没有语句错误

java - 如果在 C/C++ 中我们使用 #define,那么在 Java 中又如何呢?

Java - 框架到 "APIzize"任何类并使其在 TCP 上可用?

java - PowerMock 与依赖注入(inject)

java - 显示来自控制台应用程序的消息

java - jPanel 不重绘,等待服务器消息

java - 以动态方式在 JScrollPane 上插入面板