java - 拥有混合 JTextField/JPasswordField 的简单方法?

标签 java swing applet

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

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

然后,一旦 JTextField 获得焦点,我就会清除预填充文本并将文本颜色设置为黑色。与 stackoverflow 的搜索框类似,但处于 swing 状态。

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

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

最佳答案

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

再见, 盖德

关于java - 拥有混合 JTextField/JPasswordField 的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3708192/

相关文章:

java - 如何在多边形上显示 float 工具提示文本

在 Applet 中上传图像时 Java 堆大小问题

java - 如何在Java Applet中进行网站认证?

java - 窗口监听器不起作用

java - 如何在同一个浏览器窗口中依次运行一组 Cucumber 功能文件?

java - Android-Firebase 如何在每个 ArrayList 值下分配一个子值?

java - 单击 Swing JTable 中的行时出现意外的事件顺序

java - 在 JEditorPane 中实现即时文本样式

java - 如何从 Eclipse 运行任意服务器软件?

java - 有关接口(interface)正确实现的错误