Java 我在登录表单中使用JPasswordField,但在比较输入和;预设密码,即使输入正确,条件也不会变为真
总是转到else条件,我还使用char[]进行比较,它似乎有一个逻辑错误,而不是语法错误Java 我在登录表单中使用JPasswordField,但在比较输入和;预设密码,即使输入正确,条件也不会变为真,java,jpasswordfield,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 ActionListe
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()方法内设置断点,您将能够看到比较的确切值,并理解它们不正确的原因