JPasswordField KeyPress String Länge Fehler?

Ich versuche, die Hintergrundfarben eines JPasswordField in Java Swing (Netbeans) zu ändern.

Folgendes habe ich:

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

}

Alles funktioniert, außer wenn ich die Rücktaste drücke. Wenn ich nach der Eingabe von mehr als 8 Zeichen die Rücktaste drücke, wird die Farbe erst wieder rot, wenn nur noch 5 Zeichen im Feld vorhanden sind.

Hilfe wäre dankbar, ich bin sehr neu in Java-Programmierung und Netbeans.

EDIT: Ich habe meinen Code geändert,

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

Dieser Code scheint mir sinnvoll zu sein, aber beim Testen ändert sich die Farbe beim 9. Zeichen in Grün. Beim Zurücksetzen wechselt es bei 6 wieder zu Rot. Dies scheint das gleiche Problem zu sein, das ich hatte, als der Code war>= 7 Dabei änderte sich die Farbe beim achten Zeichen in Grün, bei fünf Zeichen jedoch wieder in Rot.

Nach der Eingabe von 9 Zeichen wird die Komponente grün

Nach dem Zurücksetzen (ab 9) bleibt die Komponente grün, bis 6 Zeichen vorhanden sind

Das ist seltsam, weil ich in einer Schaltfläche in diesem Programm einen ähnlichen Code habe, der eine Fehlermeldung anzeigt. Dieser Code funktioniert gut. Handelt es sich um ein KeyPress-Problem, das möglicherweise mit der Rücktaste zusammenhängt?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage