有一个混合JTextField / JPasswordField的简单方法?

时间:2010-09-14 10:55:16

标签: java swing applet

我正在开发一个简单的applet,它有一个简单的登录界面。

为了简洁起见,我有两个用于用户名和密码的JTextFields,我也用它作为标签。即,首先,用户名JTextField将预填充灰色文本“username”和密码JTextField预填充“简单密码”。

然后,只要JTextField获得焦点,我就会清除预填充文本并将文本颜色设置为黑色。与stackoverflow的搜索框类似,但是在摇摆中。

现在为了安全起见,我想在密码JTextField获得焦点时屏蔽密码字段(但当然仍然可以使用预先填写的文本清晰可读)。 JPasswordField不允许切换掩码/取消掩码。

有关在我的简单小程序中获取此功能的简单方法的任何想法吗?

2 个答案:

答案 0 :(得分:7)

您可以使用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");
            }
        }});

格尔茨, GHAD

答案 1 :(得分:1)

Text Prompt类将支持密码字段。