getPassword()为我提供了一系列字符,但我希望看起来像这个******
的密码显示为MyPaSwOrd
,我该怎么做?
伙计我不想提取密码,我只想在JPasswordField()中写一下“输入你的密码”,当用户点击它时,这就消失了,然后他输入了自己的密码,就像这样* * * * * *
答案 0 :(得分:1)
两种方式:
编辑:
如果您希望在您的字段中输入“输入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中输入的文本。