Java Swing的getPassword()和getText()报空指针错误

swing的getPassword()和getText()报空指针错误

不明白 这样为什么不行,提示是因为空指针

 if (map.get(new String(password.getPassword()).toString()).equals(username.getText().toString()))

但是可以

String nPassword=new String(password.getPassword());         
String nUsername=username.getText();
if (map.get(nUsername).equals(nPassword))

报错:

img

JTextField username = new JTextField(20);
JPasswordField password = new JPasswordField(20);

/*...不必要的代码我截掉了*/

loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String nPassword=new String(password.getPassword());         
                String nUsername=username.getText();
                if (map.get(nUsername).equals(nPassword)) {
//                通过哈希表进行密码和用户名的匹配
//                if (map.get(new String(password.getPassword()).toString()).equals(username.getText().toString())){//不懂为什么不行,提示是因为空指针
                    if (code.getText() .equals(String.valueOf((int) verificationCode))) {
                        JOptionPane.showMessageDialog(null, "login Successfully");
                        new FunctionMenuTablet();
                    }
                    else JOptionPane.showMessageDialog(null, "Verification code error!");
                }
                else JOptionPane.showMessageDialog(null, "Login failed!\n Password is incorrect or user does not exist");
            }
        });

如果你的username.getText() 为null的话,toString()是无法执行的。

map.get(new String(password.getPassword())这个输出一下。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632