我想在Java Swing(Netbeans)中更改JPasswordField的背景顏色。JPasswordField KeyPress字符串長度錯誤?
這是我有:
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個字符之後,直到有6個字符
這奇怪組件變綠
退格(從9開始)之後,部件保持綠色,因爲我在這個程序的按鈕中有類似的代碼,它顯示一個錯誤信息。該代碼工作正常。 這是一個KeyPress問題,或許與退格鍵有關?
謝謝,我改變了它。 – jessechk
@Jaybob:這是一個相關的[示例](http://stackoverflow.com/a/5342146/230513)Robin's建議使用'DocumentListener'我猜你的關鍵監聽器在'JPasswordField'處理之前看到'KeyEvent', – trashgod