Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Используя Компоненты Swing
Раздел: Как Использовать Различные Компоненты
Как Использовать Поля Пароля
Домашняя страница > Создание GUI С JFC/Swing > Используя Компоненты Swing

Как Использовать Поля Пароля

JPasswordField class, подкласс JTextField, обеспечивает специализированные текстовые поля для ввода пароля. Для соображений безопасности поле пароля не показывает символы, что пользователь вводит. Вместо этого поле выводит на экран символ, отличающийся от введенного того, такого как звездочка '*'. Как другая предосторожность безопасности, поле пароля хранит свое значение как массив символов, а не как строка. Как обычное текстовое поле, поле пароля запускает событие действия, когда пользователь указывает, что ввод текста полон, например нажимая кнопку Enter.

Вот изображение демонстрационного примера, который открывает маленькое окно и запрашивает пользователя вводить пароль.

Снимок PasswordDemo, который использует поле пароля

Нажмите кнопку Launch, чтобы работать, PasswordDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает Приложение PasswordDemo

Пароль является "пугалом". Пароль "пугало" является примером только. Используйте безопасные методы аутентификации в производственных системах. Можно найти весь код для этой программы в 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;
}

Полевой API Пароля

Следующие таблицы приводят обычно используемый JPasswordField конструкторы и методы. Для получения информации о API, который наследовали поля пароля, см., Как Использовать Текстовые поля.

Обычно Используемые Конструкторы JPasswordField и Методы
Конструктор или Метод Цель
JPasswordField ()
JPasswordField (Строка)
JPasswordField (Строка, интервал)
JPasswordField (интервал)
JPasswordField (Документ, Строка, интервал)
Создает поле пароля. Когда существующий, int параметр определяет требуемый width в столбцах. String параметр содержит начальный текст поля. Document параметр обеспечивает пользовательскую модель для поля.
случайная работа [] getPassword () Возвращает пароль как массив символов.
освободите setEchoChar (случайная работа)
случайная работа getEchoChar ()
Наборы или получают символ эха, который выводится на экран вместо фактических символов, введенных пользователем.
освободите addActionListener (ActionListener)
освободите removeActionListener (ActionListener)
(определенный в JTextField)
Добавляет или удаляет слушателя действия.
освободите selectAll ()
(определенный в JTextComponent)
Выбирает все символы в поле пароля.

Примеры Тот Пароль Использования Поля

PasswordDemo является единственным примером Учебного руководства, который использует a JPasswordField объект. Однако, у Учебного руководства есть много примеров то использование JTextField объекты, API которых наследован JPasswordField. См. Примеры Что Текстовые поля Использования для дополнительной информации.

Если Вы программируете в JavaFX, см. Поля Пароля.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Использовать Панели
Следующая страница: Как Использовать Индикаторы выполнения