Java 如何在JPassword中显示字符

Java 如何在JPassword中显示字符,java,passwords,character,Java,Passwords,Character,getPassword()为我提供了一个字符数组,但我希望类似于此******的密码显示如下myPassword,我该怎么做 伙计们,我不想提取密码,我只想在JPasswordField()中写“输入你的密码”,当用户点击它时,它就会消失,然后他输入自己的密码,就像这样******两种方式: 使用setEchoChar方法(请参阅)并将值设置为0(如JavaDoc所解释) 使用公共JTextField 编辑: 如果你想在你的字段中有一个像“Enter PW”这样的文本在点击后消失,那么试试下面的

getPassword()为我提供了一个字符数组,但我希望类似于此
******
的密码显示如下
myPassword
,我该怎么做

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

两种方式:

  • 使用setEchoChar方法(请参阅)并将值设置为0(如JavaDoc所解释)
  • 使用公共JTextField
  • 编辑:

    如果你想在你的字段中有一个像“Enter 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);
        }
    }
    
    注意:您需要检查用户是否输入了密码。如果他有,不要执行focusegaind方法。否则密码将消失。但这不应该是个问题

    试试这个:

    String password = new String(passwordField.getText());
    
    但是,文档明确指出,不应使用字符串来检查/操作/传递密码信息

    编辑:


    您可以使用一个普通的
    JField
    ,其中的
    文本为“在此处输入您的密码”,并在其上单击
    侦听器。每当用户单击它时,删除
    JTextField
    ,并将其替换为具有焦点的
    JPassword

    创建一个密码字段和一个文本字段。。。选中该框时,passwordField将不可见,textbox将可见

    处于未选中状态时,passwordField将可见,textfield不可见

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

    我只想添加“输入你的密码”之类的内容,当用户单击字段时,这会消失,然后他输入密码