0

我想使用此动作侦听器方法检查用户名和密码,但我总是得到错误的密码!

public void actionPerformed(ActionEvent arg0) {
    String uN = usernameFiled.getText();
    String pass = passwordField.getPassword().toString();
    //

    if (uN.isEmpty() || pass.isEmpty()){
            JOptionPane.showMessageDialog(LoginPage.this, "Fields should not be empty!", "Error", JOptionPane.ERROR_MESSAGE);
            return;
    }



    HashMap<String, User> users =  UserDAO.getInstance().getUsers();

    User temp = users.get(uN);

    if (temp.getPassword().equals(pass)){
            JOptionPane.showMessageDialog(LoginPage.this, "Login successfull", "Success", JOptionPane.INFORMATION_MESSAGE);

    }

    else {
            JOptionPane.showMessageDialog(LoginPage.this, "Wrong username or password", "Error ", JOptionPane.ERROR_MESSAGE);
    }
    }
});

代码有什么问题??

4

2 回答 2

0

passwordField.getPassword()返回char[]。所以通过调用 toString() 给你对象字符串。char[]所以,你正在使用的语句,不要给你密码。

String pass = passwordField.getPassword().toString(); 

按照以下方式使用。

String pass = new String(passwordField.getPassword());
于 2013-07-26T06:02:20.600 回答
0

JPasswordField#getPassword返回此 TextComponent 中包含的文本char[]char[].toString()不返回字符串值,array.toString实际返回的是变量名和hascode。

你应该打电话new String(passwordField.getPassword())String.valueOf(passwordField.getPassword())

尝试 -

String pass = new String(passwordField.getPassword());

或者

String pass = String.valueOf(passwordField.getPassword());
于 2013-07-26T06:06:17.617 回答