3

getPassword() 给了我一个字符数组,但我希望看起来像这样的密码******显示出来MyPaSwOrd,我该怎么做?

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

4

3 回答 3

1

两种方式:

  1. 使用 setEchoChar 方法(参见此处)并将值设置为 0(如 JavaDoc 解释的那样)
  2. 使用一个通用的 JTextField

编辑:

如果您想在您的字段中显示“输入密码”之类的文本并在单击时消失,请尝试以下操作:

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 方法。否则密码会消失。但这应该不是问题。

于 2012-05-24T10:09:12.607 回答
1

试试这个:

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

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

这解释了如何检查 char[] 密码。

编辑 :

您可以JField使用“在此处输入您的密码”作为其普通名称,text然后单击listener它。每当用户单击它时,将其删除JTextField并替换为JPassword具有焦点

于 2012-05-24T10:09:30.883 回答
0

肮脏的方式

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

在未选中的情况下,passwordField 将可见,而 textfield 将不可见。

最后,使文本字段复制密码字段中输入的文本。

于 2012-05-24T12:06:58.807 回答