1

可能重复:
如何检查 JPassword 字段是否为空

在创建登录注册表单时,我使用了两个密码字段。在保存数据之前,我想比较两个字段;如果它们匹配,则数据应保存在文件中。如果不是,它应该打开一个对话框。请任何人都可以帮助我。

4

2 回答 2

11

最安全的方法是使用Arrays.equals

if (Arrays.equals(passwordField1.getPassword(), passwordField2.getPassword())) {
   // save data
} else {
  // do other stuff
}

解释: JPassword.getText被故意弃用以避免使用Strings,而是使用char[]返回的getPassword.

调用时getText,您会得到一个可能不会更改(反射除外)的字符串(不可变对象),因此密码会保留在内存中,直到垃圾收集。

然而,一个字符数组可能会被修改,所以密码实际上不会留在内存中。

上述解决方案与该方法一致。

于 2012-12-21T19:42:06.067 回答
3

这将有助于展示您尝试过的内容...

但你会这样做:

//declare fields

JPasswordField jpf1=...;
JPasswordField jpf2=...;

...

 //get the password  from the passwordfields

String jpf1Text=Arrays.toString(jpf1.getPassword());//get the char array of password and convert to string represenation
String jpf2Text=Arrays.toString(jpf2.getPassword());

//compare the fields contents
if(jpf1Text.equals(jpf2Text)) {//they are equal

}else {//they are not equal

}
于 2012-12-21T19:35:55.190 回答