在JTextFIeld(Java Swing)中隐藏/显示密码

时间:2013-11-03 16:39:28

标签: java swing passwords jtextfield

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

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

以下是GUI的样子:

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

4 个答案:

答案 0 :(得分:30)

  

如何用星号保留用户输入以保留其原始值?

使用功能良好JPasswordField的{​​{1}}将密码设为jPasswordField.getPassword();即可使用。

  • 使用char[]屏蔽jPasswordField1.setEchoChar('*')的密码字符。
  • 如果您希望查看要插入的值,请使用*设置值jPasswordField1.setEchoChar((char)0);表示您希望在键入文本时看到该文本,类似于标准{0的行为1}}。

教程和参考:

  1. How to use Password Fields
  2. setEchoChar(char)

答案 1 :(得分:0)

好的感谢tutorialnya,

和前,

操作复选框/双击

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

   if (lihat.isSelected()) {
      password.setEchoChar((char)0); //password = JPasswordField
   } else {
      password.setEchoChar('*');
   }
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我是这样解决的:

if ( jPasswordField.getEchoChar() != '\u0000' ) {
    jPasswordField.setEchoChar('\u0000');
} else {
    jPasswordField.setEchoChar((Character) UIManager.get("PasswordField.echoChar"));
}