Java Swing (Netbeans) で JPasswordField の背景色を変更しようとしています。
ここに私が持っているものがあります:
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 の問題ですか、おそらくバックスペース キーと関係がありますか?