JPasswordField KeyPress Ошибка длины строки?
Я пытаюсь изменить цвета фона JPasswordField в Java Swing (Netbeans).
Вот что у меня есть:
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);
}
}
Все работает, кроме случаев, когда я забой. Когда после ввода 8+ символов я возвращаюсь назад, цвет не меняется на красный, пока в поле не останется только 5 символов.
Помощь будет принята с благодарностью, я очень новичок в Java-программировании и Netbeans.
РЕДАКТИРОВАТЬ: я изменил свой код,
//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);
}
Этот код, кажется, имеет смысл для меня, но при тестировании цвет меняется на 9-й символ; при возврате он снова становится красным в 6. Это похоже на ту же проблему, что и у меня, когда код был>= 7
где цвет изменился зеленый на 8-м символе, но изменился обратно на красный на 5 символов.
После ввода 9 символов компонент становится зеленым
После возврата (начиная с 9), компонент остается зеленым, пока не будет 6 символов
Это странно, потому что у меня есть подобный код в кнопке в этой программе, которая отображает сообщение об ошибке. Этот код работает отлично. Это проблема KeyPress, возможно, это связано с клавишей Backspace?