JPasswordField KeyPress string length error?

Estoy tratando de cambiar los colores de fondo de un JPasswordField en Java Swing (Netbeans).

Esto es lo que tengo:

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);
    }

}

Todo funciona, excepto cuando retrocedo. Cuando retrocedo después de escribir más de 8 caracteres, el color no vuelve a cambiar a rojo hasta que solo quedan 5 caracteres en el campo.

Se agradecería la ayuda, soy muy nuevo en la programación de Java y Netbeans.

EDITAR: He cambiado mi 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);
    }

Este código parece tener sentido para mí, pero en las pruebas, el color cambia a verde en el noveno carácter; al retroceder, cambia a rojo en 6. Este parece ser el mismo problema que tuve cuando el código estaba>= 7 donde el color cambió a verde en el octavo carácter, pero volvió a cambiar a rojo con 5 caracteres.

Después de escribir 9 caracteres, el componente se vuelve verde

Después del retroceso (a partir de 9), el componente permanece verde hasta que hay 6 caracteres

Esto es extraño, porque tengo un código similar en un botón en este programa que muestra un mensaje de error. Ese código funciona bien. ¿Es este un problema de KeyPress, quizás algo que ver con la tecla de retroceso?

Respuestas a la pregunta(5)

Su respuesta a la pregunta