从另一个类获取文本字段输入

时间:2014-11-19 21:06:26

标签: java class nullpointerexception jtextfield

我想将 mainGui.java 的输入调用 mainmenu.java ,但它会一直返回NullPointException。

以下是 mainGui.java

的代码
String input;

public String user() {
        return input = logintext.getText();
}

private void submitbtnActionPerformed(java.awt.event.ActionEvent evt) {                                          

        String input = logintext.getText();
            String input2 = loginpassword.getText();
             try {
                    lectFunc = (lectFunc)lectRecord.get(input);
                    if(lectFunc == null){
                        JOptionPane.showMessageDialog(null,"Wrong username or password!");
                    } else if (lectFunc.getUser().equals(input) && lectFunc.getPass().equals(input2)){                       dispose();
                        new mainmenu().setVisible(true);
                    }
                    else {
                        JOptionPane.showMessageDialog(null,"Error");
                    }
                 } catch (Exception ex) {
                       ex.printStackTrace();
                 }
}

mainmenu.java

的代码
public class mainmenu extends javax.swing.JFrame {
    lectFunc lectFunc;
    mainGui mainGui;

    public mainmenu() {
        final String user = mainGui.user();
        lectFunc.setUser(user);
        System.out.println(lectFunc.getUser());
        new mainGui().setVisible(false);
        initComponents();
    }

有没有办法克服这个问题?

更新:NPE

java.lang.NullPointerException
    at oodj.mainmenu.<init>(mainmenu.java:9)
    at oodj.mainGui.submitbtnActionPerformed(mainGui.java:158)
    at oodj.mainGui.access$000(mainGui.java:8)
    at oodj.mainGui$1.actionPerformed(mainGui.java:52)

第9行:final String user = mainGui.user();

2 个答案:

答案 0 :(得分:0)

我认为对initComponents的调用应该在开头。主菜单可能尚未创建。

答案 1 :(得分:0)

您不能将新创建的mainGui对象分配给您的类属性:

public class mainmenu extends javax.swing.JFrame {
    lectFunc lectFunc;
    mainGui mainGui;

    public mainmenu() {
        ...
        mainGui = new mainGui();
        mainGui.setVisible(false);
    }
}