how to display characters in jPasswordField rather than * sign in java?

14.3k views Asked by At

I am working with jPasswordField in java in order to make a log in system.

I have used jTextField for name input and jPasswordField for password. I want to create an option of "Show Characters" in my program that may allow the user to view the characters he has typed in passwordfield.

I have tried

  1. retrieving data from password field
  2. converting it into string
  3. displaying that string in passwordfield using .setText() method

But this did not work, as it displays everything in esteric (*****) form. Please help...

3

There are 3 answers

3
Java Curious ღ On BEST ANSWER
hidePasswordCheckbox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            httpProxyPassword.setEchoChar('*');
        } else {
             httpProxyPassword.setEchoChar((char) 0);
        }
    }
});

You have to use httpProxyPassword.setEchoChar((char) 0); for that. Here httpProxyPassword is a name of textbox you can use as per your's.

0
Mauricio Rdz On

with this improved code you change the echo char back to its default, instead of *

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);  
            } 
        }
    });
0
Vikash Yadav On

I checked it and found that default value is * but it changes according to look and feel. So check that default value and put it back in setEchoChar method also remember typecasting(char). Hope it helps

/*
 * 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);  
        } 
    }
});