所以我遇到的问题是我想要一个应用程序的帐户创建区域,并且在这样做时他们必须输入该帐户的密码两次。如果密码相同,则会创建帐户,否则会被告知他们不同并要求再次尝试。
我遇到的问题是,尽管两个JTextFields中的数据在使用==进行比较时是相同的,但它们显然是不同的。我尝试过的代码如下所示。
JLabel PasswordL = new JLabel ();
PasswordL.setText("Password:");
UserPanel.add(PasswordL,"cell 1 0,width 150,height 25,span 2 1");
final JTextField PasswordT = new JTextField ();
UserPanel.add(PasswordT,"cell 1 1,width 150,height 25");
JLabel ConfirmPasswordL = new JLabel ();
ConfirmPasswordL.setText("Confirm Password:");
UserPanel.add(ConfirmPasswordL,"cell 1 2,width 150,height 25,span 2 1");
final JTextField ConfirmPasswordT = new JTextField ();
UserPanel.add(ConfirmPasswordT,"cell 1 3,width 150,height 25");
JButton AddNewUser = new JButton ();
AddNewUser.setText("Insert");
AddUserButtonPanel.add(AddNewUser,"cell 0 0,width 100,height 25");
AddNewUser.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
System.out.println(new String(PasswordT.getText()));
System.out.println(new String(ConfirmPasswordT.getText()));
if (new String(PasswordT.getText()) == new String(ConfirmPasswordT.getText())) {
AdminConsole AC = new AdminConsole ();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
new ErrorWindow("This account already exists!");
}
} else {
JFrame Error = new JFrame();
Error.add(new JLabel("The Password do not match!"));
Error.setSize(200, 50);
Error.setLocationRelativeTo(null);
Error.setVisible(true);
}
}
});
我已尝试使用和不使用新的String(),现在我已经没有想法了。非常感谢任何建议。
答案 0 :(得分:1)
Java透视图中的字符串是Object。有两个具有相同值的对象。 “==”运算符测试身份。对于对象,只有将一个对象与自身进行比较时,它才会返回true。意味着obj!= obj.clone()。这是常见的Java陷阱。请参阅注释,改为使用equals()。