有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是一种简单的混合JTextField/JPasswordField的方法吗?

我正在开发一个具有simpe登录界面的简单小程序

为了简洁起见,我有两个用于用户名和密码的jtextfield,我也使用它们作为标签。i、 e.首先,用户名JTextField将预先填充灰色文本“username”,密码JTextField将预先填充“simple password”

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

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

在我的简单小程序中,有没有简单的方法来获得这个功能的想法


共 (2) 个答案

  1. # 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");
                }
            }});
    

    格里茨, 加德