【问题标题】:Simple way to have a hybrid JTextField / JPasswordField?拥有混合 JTextField / JPasswordField 的简单方法?
【发布时间】:2010-09-14 10:55:16
【问题描述】:

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

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

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

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

对于在我的简单小程序中获取此功能的简单方法有什么想法吗?

【问题讨论】:

    标签: java swing applet


    【解决方案1】:

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

    问候, 加德

    【讨论】:

    • 不完全阅读 javadoc 对我不利!我查看了它的代码,甚至对其进行了扩展,但从未费心阅读 setEchoChar 的 javadoc!谢谢 GHad!
    【解决方案2】:

    Text Prompt 类将支持密码字段。

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 2019-05-07
      • 2011-04-12
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多