Błąd długości łańcucha JPasswordField KeyPress?
Próbuję zmienić kolory tła JPasswordField w Java Swing (Netbeans).
Oto co mam:
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);
}
}
Wszystko działa, chyba że cofam się. Gdy cofam się po wpisaniu 8 znaków, kolor nie zmienia się z powrotem na czerwony, dopóki w polu nie pozostanie tylko 5 znaków.
Pomoc byłaby doceniana, jestem bardzo nowa w programowaniu w Javie i Netbeans.
EDYTUJ: Zmieniłem swój kod,
//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);
}
Ten kod wydaje mi się sensowny, ale podczas testowania kolor zmienia się na zielony na 9. znaku; podczas cofania zmienia się z powrotem na czerwony o 6. Wydaje się, że jest to ten sam problem, który miałem, gdy kod był>= 7
gdzie kolor zmienił się na zielony na ósmej postaci, ale zmienił się z powrotem na czerwony przy 5 znakach.
Po wpisaniu 9 znaków komponent zmienia kolor na zielony
Po cofnięciu (począwszy od 9) komponent pozostaje zielony, aż pojawi się 6 znaków
To dziwne, ponieważ mam podobny kod w przycisku w tym programie, który wyświetla komunikat o błędzie. Ten kod działa dobrze. Czy jest to problem z KeyPress, może coś wspólnego z klawiszem Backspace?