我在登录表单中使用 JPasswordField,但是当我比较输入和预设密码时,即使输入正确,条件也永远不会变为真
I am using JPasswordField in login form but when i compare input & preset passwords, condition never gets true even though the input is correct
总是继续到 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);
}
您在用户有机会输入密码之前调用 getPassword()。您需要将 getPassword() 调用移动到 actionPerformed() 方法中,以便它比较实际输入的密码,而不是最初显示在表单中的空密码。
另外请考虑使用调试器来了解代码的工作原理。如果您在 actionPerformed() 方法中设置断点,您将能够看到被比较的确切值并理解为什么它们不正确。
总是继续到 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);
}
您在用户有机会输入密码之前调用 getPassword()。您需要将 getPassword() 调用移动到 actionPerformed() 方法中,以便它比较实际输入的密码,而不是最初显示在表单中的空密码。
另外请考虑使用调试器来了解代码的工作原理。如果您在 actionPerformed() 方法中设置断点,您将能够看到被比较的确切值并理解为什么它们不正确。