JPasswordField返回一些转换为字符串类型的哈希码

the*_*lip 2 java swing jpasswordfield

我的程序在初始化程序之前从用户获取用户名和密码验证,因此我创建了一个登录按钮,我将ActionListener关联到以下所示

   login.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                if(txtUserName.getText().equals("Suraj") && (txtPwd.getPassword().toString()).equals("s123")){

                                dispose();
                                TimeFrame tFrame = new TimeFrame(userName);
                                tFrame.setVisible(true);
                                tFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                                tFrame.setLayout(new GridLayout());

                        } else {
                            JOptionPane.showMessageDialog(null,"User name or password don't match","Acces Denied", JOptionPane.ERROR_MESSAGE);
                        }
Run Code Online (Sandbox Code Playgroud)

现在出现的问题是即使输入正确的密码,程序也会显示错误消息在此输入图像描述智者

Joh*_*nes 5

getPassword()返回一个char[].在toString()你认为它不返回的内容作为一个字符串.

试试new String(txtPwd.getPassword()).equals("s123").

但是,它有一个原因char[]而不是String.尝试在javadoc中查找它的安全性方面.