如何在jPasswordField中显示字符而不是在*中签名?

时间:2013-12-28 09:16:46

标签: java jpasswordfield

我正在使用java中的jPasswordField来创建登录系统。

我使用jTextField作为名称输入,jPasswordField作为密码。我想在我的程序中创建一个“显示字符”选项,允许用户查看他在密码字段中输入的字符。

我试过了

  1. 从密码字段中检索数据
  2. 将其转换为字符串
  3. 使用.setText()方法
  4. 在密码字段中显示该字符串

    但这不起作用,因为它以酯类(*****)形式显示所有内容。 请帮忙......

3 个答案:

答案 0 :(得分:10)

hidePasswordCheckbox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            httpProxyPassword.setEchoChar('*');
        } else {
             httpProxyPassword.setEchoChar((char) 0);
        }
    }
});

你必须使用httpProxyPassword.setEchoChar((char) 0);。 此处httpProxyPassword是您可以根据自己的使用文本框的名称。

答案 1 :(得分:1)

我查了一下,发现默认值是*,但它会根据外观而变化。因此,检查该默认值并将其放回setEchoChar方法还要记住类型转换(char)。希望它有所帮助

/*
 * here set defaultt an int variable and 
 * then print that value using System.out.println(defaultt);
 * and then check that value and use it in place of that default value eg:-
 */

int defaultt = psswrd.getEchoChar(); 
System.out.println(defaultt);
//now check the value
chbx_psswrd.addItemListener(new ItemListener() { 
    public void itemStateChanged(ItemEvent e) { 
        if (e.getStateChange() == ItemEvent.SELECTED) {
            psswrd.setEchoChar((char)<***keep that value here directly***>); 
        } else {  
            psswrd.setEchoChar((char) 0);  
        } 
    }
});

答案 2 :(得分:0)

使用此改进的代码,您可以将echo char更改回其默认值,而不是*

char default = psswrd.getEchoChar(); 
chbx_psswrd.addItemListener(new ItemListener() { 
        public void itemStateChanged(ItemEvent e) { 
            if (e.getStateChange() == ItemEvent.SELECTED) {
                psswrd.setEchoChar(default); 
            } else {  
                psswrd.setEchoChar((char) 0);  
            } 
        }
    });