17

所以我一直在研究密码强度检查器,它的工作方式是用户在文本字段中输入一些随机文本,然后显示瞬时视觉反馈(点分解)。我还添加了一个复选框,它在被选中时应该隐藏密码,即用星号替换所有字符,同时保留用户输入的实际文本。文档侦听器用于跟踪文本字段内的更改。(条目中的每个字符都会被分析然后评分)

所以,我的问题是,我究竟如何用星号掩盖用户输入并保留其原始值?

这是 GUI 的样子:

http://speedcap.net/sharing/screen.php?id=files/51/2f/512f9abb3f92a25add7c593e9d80e9e4.png

4

4 回答 4

37

我究竟如何用星号掩盖用户输入并保留其原始值?

使用JPasswordFieldwhich has nice 功能jPasswordField.getPassword();来获取密码char[]

  • 用于jPasswordField1.setEchoChar('*')用 屏蔽密码字符*
  • 如果您希望看到正在插入的值,请使用jPasswordField1.setEchoChar((char)0);设置值0表示您希望在输入时看到文本,类似于标准的行为JTextField

教程和参考:

  1. 如何使用密码字段
  2. setEchoChar(字符)
于 2013-11-03T16:43:50.110 回答
2

使用密码字段而不是使用文本字段

于 2018-04-11T08:13:17.973 回答
1

好的,谢谢你的教程,

和前,

动作复选框/双击

private void lihatActionPerformed(java.awt.event.ActionEvent evt) {  

   if (lihat.isSelected()) {
      password.setEchoChar((char)0); //password = JPasswordField
   } else {
      password.setEchoChar('*');
   }
}
于 2014-12-26T06:46:25.950 回答
0

我解决了如下:

if ( jPasswordField.getEchoChar() != '\u0000' ) {
    jPasswordField.setEchoChar('\u0000');
} else {
    jPasswordField.setEchoChar((Character) UIManager.get("PasswordField.echoChar"));
}
于 2021-07-08T21:14:09.533 回答