如何在密码中显示字符

时间:2012-05-24 10:04:43

标签: java passwords character

getPassword()为我提供了一系列字符,但我希望看起来像这个******的密码显示为MyPaSwOrd,我该怎么做?

伙计我不想提取密码,我只想在JPasswordField()中写一下“输入你的密码”,当用户点击它时,这就消失了,然后他输入了自己的密码,就像这样* * * * * *

3 个答案:

答案 0 :(得分:1)

两种方式:

  1. 使用setEchoChar方法(参见here)并设置值0(如JavaDoc解释)
  2. 使用常见的JTextField
  3. 编辑:

    如果您希望在您的字段中输入“输入PW”等文字,点击后会消失,请尝试以下操作:

    public class JPassword {
    
        public static void main(String[] args) {
    
            JFrame frame = new JFrame();
    
            final JPasswordField field = new JPasswordField();
    
            field.addFocusListener(new FocusListener() {
    
                @Override
                public void focusLost(FocusEvent arg0) {
    
                    char c = 0;
                    field.setEchoChar(c);
                    field.setText("Enter PW");
    
                }
    
                @Override
                public void focusGained(FocusEvent arg0) {
    
                    char c = 1;
                    field.setEchoChar(c);
                                field.setText("");
                }
            });
    
            char c = 0;
            field.setText("Enter PW");
            field.setEchoChar(c);
    
            frame.setLayout(new FlowLayout());
            frame.getContentPane().add(new JButton("test"));
            frame.getContentPane().add(field);
            frame.pack();
            frame.setVisible(true);
        }
    }
    

    注意:您需要检查用户是否输入了密码。如果有,请不要执行focuseGained方法。否则密码将消失。但这应该不是问题。

答案 1 :(得分:1)

试试这个:

String password = new String(passwordField.getText());

但是,文档明确声明您不应该使用字符串来检查/操作/传递密码信息。

This explains how to check char[] passwords.

编辑:

您可以将普通JField与“在此输入密码”作为text,并点击listener。每当用户点击它时,请移除JTextField并将其替换为JPassword,并将其置于焦点

答案 2 :(得分:0)

肮脏的方式

制作一个密码字段和一个文本字段...当您选中该复选框时,密码字段将变为不可见且文本框可见。

在未经检查的情况下,passwordField将可见且textfield不可见。

最后,使textfield复制在passwordField中输入的文本。