Простой способ иметь гибридный JTextField / JPasswordField? - PullRequest
2 голосов
/ 14 сентября 2010

Я занимаюсь разработкой простого апплета с интерфейсом входа в simpe.

И чтобы быть кратким в пространстве, у меня есть два JTextFields для имени пользователя и пароля, которые я также использую в качестве меток. то есть для начала имя пользователя JTextField будет предварительно заполнено серым текстом с надписью «имя пользователя», а пароль JTextField предварительно заполнен «простым паролем».

Затем, как только JTextField получает фокус, я очищаю текст предварительного заполнения и устанавливаю цвет текста на черный. Аналогичен окну поиска в stackoverflow, но в разгаре.

Теперь в целях безопасности я хотел бы замаскировать поле пароля, когда пароль JTextField получает фокус (но, конечно, все еще имеет разборчивый текст, с которого можно начать чтение). JPasswordField не разрешает переключение маски / снятия маски.

Какие-нибудь идеи для простого способа получить эту функциональность в моем простом апплете?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2010

Вы можете отключить маскирующий символ эха с помощью setEchoChar ((char) 0); как указано в JavaDoc.

Пример

    final JPasswordField pass = new JPasswordField("Password");
    Font passFont = user.getFont();
    pass.setFont(passFont.deriveFont(Font.ITALIC));
    pass.setForeground(Color.GRAY);
    pass.setPreferredSize(new Dimension(150, 20));
    pass.setEchoChar((char)0);
    pass.addFocusListener(new FocusListener() {

        public void focusGained(FocusEvent e) {
            pass.setEchoChar('*');
            if (pass.getText().equals("Password")) {
                pass.setText("");
            }
        }

        public void focusLost(FocusEvent e) {
            if ("".equalsIgnoreCase(pass.getText().trim())) {
                pass.setEchoChar((char)0);
                pass.setText("Password");
            }
        }});

Greetz, GHAD

1 голос
/ 14 сентября 2010

Класс Text Prompt будет поддерживать поле пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...