JPasswordField KeyPress string length error?
java, jpasswordfield, netbeans, string-length, swing
Solution
As an aside, examine the length of the array returned by `getPassword()`, rather than the length of a `String` constructed from that array. The `String` is a security risk, as it will be stored for an indefinite time with the easily found name `userPassword`.
Addendum: Here's a related example of Robin's suggestion to use `DocumentListener`. I'm guessing that your key listener is seeing the `KeyEvent` before the `JPasswordField` has processed it.
Problem
I am trying to change background colors of a JPasswordField in Java Swing (Netbeans). Here's what I have: ``` private void pstxtPasswordKeyPressed(java.awt.event.KeyEvent evt) { //Get string from password box userPassword = new String(pstxtPassword.getPassword()); //If password is 8+ characters //(one less because string counting begins at 0) if (userPassword.length() >= 7) { //Set password input box background color to green pstxtPassword.setBackground(Color.green); } else { //If password is less than 8 characters //Set password input box background color to red pstxtPassword.setBackground(Color.red); } } ``` Everything works, except when I backspace. When I backspace after typing 8+ characters, the color doesn't change back to red until there is only 5 characters left in the field. Help would be appreciated, I am very new to java programming and Netbeans. EDIT: I have changed my code, ``` //If password is 8+ characters if ((pstxtPassword.getPassword()).length >= 8) { //Set password input box background color to green pstxtPassword.setBackground(Color.green); } else { //If password is less than 8 characters //Set password input box background color to red pstxtPassword.setBackground(Color.red); } ``` This code seems to make sense to me, but in testing, the color changes green at the 9th character; when backspacing, it changes back to red at 6. This seems to be the same problem I had when the code was `>= 7` where the color changed green at the 8th character, but changed back to red at 5 characters. After typing 9 characters, the component turns green After backspacing (starting from 9), component remains green until there are 6 characters This is strange, because I have similar code in a button in this program which displays an error message. That code works fine. Is this a KeyPress problem, perhaps something to do with the backspace key?