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?

Ответы на вопрос(5)

Ваш ответ на вопрос