我在登录表单中使用JPasswordField但是当我比较输入&预设密码,即使输入正确,条件也永远不会成立

时间:2016-01-24 06:22:15

标签: java jpasswordfield

总是进入else条件,我也使用char []进行比较,似乎有逻辑错误而不是语法。

    JButton Logb = new JButton("Go");
    String name="Wijdan";
    char[] password=passwordField.getPassword();
    char[] pass=new char[]{'l','o','g','i','n'};

    Logb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) { 
            if(namefield.getText().equals(name) && Arrays.equals(password, pass)){
            namefield.setText("brr");
            passwordField.setText("brr");
            }
            else {
                JOptionPane.showMessageDialog(null, "Invalid username or password");


            }
        }
    });
    Logb.setFont(new Font("Tahoma", Font.PLAIN, 25));
    Logb.setBounds(180, 190, 89, 39);
    contentPane.add(Logb);
}

1 个答案:

答案 0 :(得分:0)

您在用户有机会输入密码之前调用了getPassword()。您需要将getPassword()调用移动到actionPerformed()方法中,以便它比较实际输入的密码,而不是最初在表单中显示的空密码。

另外,请考虑使用调试器来了解代码的工作原理。如果在actionPerformed()方法中设置断点,您将能够看到正在比较的确切值并理解它们不正确的原因。