两个JTextField中的数据相同时彼此不相等

时间:2015-03-02 14:39:06

标签: java

所以我遇到的问题是我想要一个应用程序的帐户创建区域,并且在这样做时他们必须输入该帐户的密码两次。如果密码相同,则会创建帐户,否则会被告知他们不同并要求再次尝试。

我遇到的问题是,尽管两个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(),现在我已经没有想法了。非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

Java透视图中的字符串是Object。有两个具有相同值的对象。 “==”运算符测试身份。对于对象,只有将一个对象与自身进行比较时,它才会返回true。意味着obj!= obj.clone()。这是常见的Java陷阱。请参阅注释,改为使用equals()。