JPasswordField KeyPress error do comprimento da string?
Eu estou tentando mudar as cores de fundo de um JPasswordField em Java Swing (NetBeans).
Aqui está o que eu tenho:
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);
}
}
Tudo funciona, exceto quando eu retrocedo. Quando eu retrocesso depois de digitar 8 caracteres, a cor não muda de volta para vermelho até que haja apenas 5 caracteres no campo.
Ajuda seria apreciada, eu sou muito novo para programação java e NetBeans.
EDIT: eu mudei meu código,
//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);
}
Esse código parece fazer sentido para mim, mas no teste, a cor muda de verde no nono caractere; quando backspacing, muda de volta para vermelho em 6. Este parece ser o mesmo problema que tive quando o código foi>= 7
onde a cor mudou verde no 8º caractere, mas mudou de volta para vermelho em 5 caracteres.
Depois de digitar 9 caracteres, o componente fica verde
Após o retrocesso (a partir de 9), o componente permanece verde até que haja 6 caracteres
Isso é estranho, porque eu tenho código semelhante em um botão neste programa que exibe uma mensagem de erro. Esse código funciona bem. Este é um problema KeyPress, talvez algo a ver com a tecla backspace?