मैं जावा स्विंग (नेटबीन्स) में एक जेपीसवर्डफ़िल्ल्ड के पृष्ठभूमि रंग बदलने की कोशिश कर रहा हूं।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 वर्ण शेष नहीं होते।
सहायता की सराहना की जाएगी, मैं जावा प्रोग्रामिंग और नेटबीन्स के लिए बहुत नया हूं।
संपादित करें: मैं अपने कोड बदल गए हैं,
//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 वर्ण लिखने के बाद, हरी घटक
backspacing (9 से शुरू) के बाद, घटक हरी बनी हुई है बदल जाता है जब तक वहाँ 6 चरित्र
यह अजीब है , क्योंकि मेरे पास इस प्रोग्राम में एक बटन में समान कोड है जो एक त्रुटि संदेश प्रदर्शित करता है। वह कोड ठीक काम करता है। क्या यह एक कुंजीपटल समस्या है, शायद बैकस्पेस कुंजी के साथ कुछ करने के लिए?
धन्यवाद, मैंने इसे बदल दिया है। – jessechk
@Jaybob: यहां एक संबंधित [उदाहरण] (http://stackoverflow.com/a/5342146/230513) रॉबिन के बारे में यह सुनिश्चित करने के लिए 'userPassword' के मान को बाहर निकालें। 'DocumentListener' का उपयोग करने के लिए सुझाव। मुझे लगता है कि 'जेपीएसएसवर्डफ़िल्ल्ड' ने इसे संसाधित करने से पहले आपका मुख्य श्रोता 'कीइवेंट' देख रहा है। – trashgod