2015-03-02 25 views
0

所以我遇到的问题是我试图创建应用的帐户创建区域,同时这样做时他们必须输入密码帐户两次。如果密码相同,则帐户将被创建,否则会被告知它们不同并要求再次尝试。两个JTextFields中的数据在相同时不相等

我遇到的问题是,尽管两个JTextField中的数据在使用==进行比较时是相同的,但它们显然不同。我试过的代码如下所示。

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

Comapre使用'.equals'方法:'string1.equals(string2)' – 2015-03-02 14:42:11

+1

使用PasswordT.getText()。equals(ConfirmPasswordT.getText())而不是== – StanislavL 2015-03-02 14:42:15

+1

不要使用==!使用.equals()代替! – 2015-03-02 14:42:59

回答

1

Java角度的字符串是Object。有两个具有相同值的对象。 “==”运算符测试身份。在对象的情况下,只有当你比较一个对象到它自己时它才会返回true。意思是obj!= obj.clone()。这是常见的Java陷阱。看到评论,用equals()代替。

相关问题