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