2016-07-04 5 views
1

Мне нужно заполнить поле JPassword. Однако похоже, что метода нет setPassword (char [])Как установить значение для поля JPassword?

Единственный способ для этого - setText. Однако мне нужно будет подать String

С getText устарел, поэтому я предполагаю, что setText также будет устаревшим.

Вот выдержка из answer on stackoverflow

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 [])?

+1

Вот пример, который использует поле «PlainDocument» и массив символов (которые вы можете очистить после заполнения документа): http://stackoverflow.com/questions/26975275/fill-a-jpasswordfield -programmatically-without-create-a-string-object – Berger

+0

Похоже, это может сработать. – john

ответ

1

Почему нет метода setPassword (char [])?

Если вы вставляете массив String или char, в конце это то же самое.

... поэтому я предполагаю, что setText также будет устаревшим.

Нет, это не будет. Обычно пользователь вводит пароль. И если вы храните свои пароли где-то, они должны быть дешифрованы и вставлены в это поле, прежде чем вы сможете их отправить.

+0

Большое спасибо. Я сохраняю пароль в 'byte []' в базе данных. Затем я конвертирую его в 'char []'. Я ожидал иметь метод 'setPassword (char [])' для рендеринга пароля для JPasswordField'. Однако, похоже, мне нужно будет преобразовать 'byte []' в 'String' следующим образом:' new String (bytePassword, «UTF-8») ', а затем передать его в' JPasswordField'. Это создаст пароль 'String' в памяти, который может быть случайно сброшен на консоль, если только он не будет собран сборщиком мусора. – john

+1

Как сказал Джон, вынуждая указывать пароль как« String », побеждает цель, а IMO 'setText' должен быть устаревшим. Зачем полагаться на безопасность использования 'char []', если вам все равно нужно создать 'String', содержащий пароль? –

Смежные вопросы