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

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 に答える
0

passwordField.getPassword()戻りchar[]ます。したがって、toString() を呼び出すと、オブジェクト文字列が得られますchar[]。したがって、使用しているステートメントでは、パスワードを与えないでください。

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

以下の方法で使用してください。

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