Spec-Zone .ru
спецификации, руководства, описания, API
|
JPasswordField
class, подкласс JTextField
, обеспечивает специализированные текстовые поля для ввода пароля. Для соображений безопасности поле пароля не показывает символы, что пользователь вводит. Вместо этого поле выводит на экран символ, отличающийся от введенного того, такого как звездочка '*'. Как другая предосторожность безопасности, поле пароля хранит свое значение как массив символов, а не как строка. Как обычное текстовое поле, поле пароля запускает
Вот изображение демонстрационного примера, который открывает маленькое окно и запрашивает пользователя вводить пароль.
Нажмите кнопку Launch, чтобы работать, PasswordDemo, используя Сеть Java™ Запускаются (
Пароль является "пугалом". Пароль "пугало" является примером только. Используйте безопасные методы аутентификации в производственных системах. Можно найти весь код для этой программы в
. Вот код, который создает и устанавливает поле пароля:PasswordDemo.java
passwordField = new JPasswordField(10); passwordField.setActionCommand(OK); passwordField.addActionListener(this);
Параметр, который передают в JPasswordField
конструктор указывает на привилегированный размер поля, которое по крайней мере 10 столбцов шириной в этом случае. По умолчанию поле пароля выводит на экран точку для каждого введенного символа. Если Вы хотите изменить символ эха, вызовите setEchoChar
метод. Код тогда добавляет слушателя действия поля пароля, которое проверяет значение, введенное пользователем. Вот реализация слушателя действия actionPerformed
метод:
public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if (OK.equals(cmd)) { //Process the password. char[] input = passwordField.getPassword(); if (isPasswordCorrect(input)) { JOptionPane.showMessageDialog(controllingFrame, "Success! You typed the right password."); } else { JOptionPane.showMessageDialog(controllingFrame, "Invalid password. Try again.", "Error Message", JOptionPane.ERROR_MESSAGE); } //Zero out the possible password, for security. Arrays.fill(input, '0'); passwordField.selectAll(); resetFocus(); } else ...//handle the Help button... }
getPassword
метод, следует обнулить каждый из его элементов. Предыдущий фрагмент кода показывает, как сделать это. Программа, которая использует поле пароля обычно, проверяет пароля прежде, чем завершить любые действия, которые требуют пароля. Эта программа вызывает закрытый метод, isPasswordCorrect
, это сравнивает значение, возвращенное getPassword
метод к значению сохранен в символьном массиве. Вот его код:
private static boolean isPasswordCorrect(char[] input) { boolean isCorrect = true; char[] correctPassword = { 'b', 'u', 'g', 'a', 'b', 'o', 'o' }; if (input.length != correctPassword.length) { isCorrect = false; } else { isCorrect = Arrays.equals (input, correctPassword); } //Zero out the password. Arrays.fill(correctPassword,'0'); return isCorrect; }
Следующие таблицы приводят обычно используемый JPasswordField
конструкторы и методы. Для получения информации о API, который наследовали поля пароля, см., Как Использовать Текстовые поля.
Конструктор или Метод | Цель |
---|---|
JPasswordField () |
Создает поле пароля. Когда существующий, int параметр определяет требуемый width в столбцах. String параметр содержит начальный текст поля. Document параметр обеспечивает пользовательскую модель для поля. |
|
Возвращает пароль как массив символов. |
|
Наборы или получают символ эха, который выводится на экран вместо фактических символов, введенных пользователем. |
(определенный в JTextField ) |
Добавляет или удаляет слушателя действия. |
(определенный в JTextComponent ) |
Выбирает все символы в поле пароля. |
PasswordDemo является единственным примером Учебного руководства, который использует a JPasswordField
объект. Однако, у Учебного руководства есть много примеров то использование JTextField
объекты, API которых наследован JPasswordField
. См. Примеры Что Текстовые поля Использования для дополнительной информации.
Если Вы программируете в JavaFX, см.