如何将值设置为JPassword字段?
我需要填写JPassword
字段。但看起来好像没有方法setPassword (char [])
如何将值设置为JPassword字段?
唯一的方法是setText
。但我需要饲料String
由于getText
已被弃用,所以我认为setText
也将被弃用。
When calling getText you get a String (immutable object) that may not be changed (except reflection) and so the password stays in the memory until garbage collected
摘录因此,没有同样的事情发生时,我setText
。我提供String
,它保留在内存中。 setText
为什么不推荐使用?为什么没有setPassword (char [])
方法?
为什么没有setPassword(char [])方法?
不管你在最后插入一个字符串还是一个字符数组都是一样的。
...所以我认为setText也将被弃用。
不,它不会。通常用户将输入密码。如果您将密码存储在某个地方,则需要将其解密并插入此字段,然后才能发送。
非常感谢。我将密码保存在数据库的'byte []'中。然后我将它转换为'char []'。我期待有一个方法'setPassword(char [])'将密码呈现给'JPasswordField'。但是,它看起来像我需要将'byte []'转换为'String',如下所示:new String(bytePassword,“UTF-8”)'然后将其提供给'JPasswordField'。这将在内存中创建一个密码'String',可能会被意外刷新到控制台,除非它被垃圾收集器拾取。 – john
正如约翰所说的,被迫将密码指定为'String'有违目的,而IMO 'setText'应该被弃用。如果你必须创建一个包含密码的字符串,为什么要依靠使用'char []'的安全性呢? –
下面是一个使用字段的'PlainDocument'和一个字符数组(你可能想要清除一次文档已被填充)的示例:http://stackoverflow.com/questions/26975275/fill-a-jpasswordfield -programmatically-without-creating-a-string-object – Berger
看起来像可以工作。 – john