2009-08-24 11 views
17

इस प्रश्न में Is there any way to accept only numeric values in a JTextField? उत्तरों में से एक ने सुझाव दिया कि JFormattedTextField में समस्याएं थीं।JFormattedTextField क्यों बुरा है?

मैंने अभी तक इसका उपयोग नहीं किया है, लेकिन क्या कोई इस वर्ग के साथ मुद्दों पर विस्तार (या असहमत) हो सकता है?

उत्तर

15

JFormattedTextField खराब उपयोगिता के कारण बुरा है। उदाहरण के लिए, यदि कोई टेक्स्ट फ़ील्ड केवल एक पूर्णांक मान स्वीकार करने में सक्षम होना चाहिए, तो JFormattedTextField किसी भी पुराने कचरे की अनुमति देगा और फिर ध्यान केंद्रित होने पर शिकायत करेगा। मामलों को और भी खराब बनाने के लिए, इसमें फोकस खो जाने पर कॉन्फ़िगर करने योग्य व्यवहार की एक श्रृंखला होती है (एक स्पष्ट संकेत है कि उनमें से कोई भी सही विकल्प नहीं है)।

इसमें "k3wl" फ़ॉर्मेटर चयन भी है। ऐसा लगता है कि दस्तावेज़ के साथ खराब बातचीत भी है (यह DocumentFilter स्थापित करने का प्रयास करता है, लेकिन यह Document इंटरफ़ेस का हिस्सा नहीं है)।

9

मैं स्वीकार करूंगा कि JFormattedTextField उपयोग करने का सबसे आसान वर्ग नहीं है, और हां इसमें समस्याएं हैं लेकिन अधिकांश घटकों की तरह यह कुछ चीजों पर एक उचित काम करता है और दूसरों पर एक बुरी नौकरी करता है।

यह वास्तव में आपको इंटेगर मानों के लिए संपादित करने की अनुमति देता है क्योंकि जब आप मास्कफॉर्मेटर का उपयोग करते हैं तो डेटा टाइप किया जाता है। तो सरल कार्यों के लिए यह प्रभावी हो सकता है।

डेटा का संपादन एक जटिल कार्य है। कभी-कभी आपको डेटा को संपादित करने की आवश्यकता होती है (इंटीजर मानों की जांच के मामले में)। कभी-कभी आपको दर्ज होने के बाद डेटा को संपादित करने की आवश्यकता होती है (किसी दिनांक को सत्यापित करने के मामले में)। फिर निश्चित रूप से आपको यह तय करना होगा कि अमान्य डेटा को कैसे प्रबंधित किया जाए।

गैर-तुच्छ कार्य करते समय पैरामीटर को कॉन्फ़िगर करने की एक निश्चित मात्रा हो सकती है। वे हमेशा जिस तरीके से आप चाहते हैं या जिस तरह से आप उन्हें उम्मीद करते हैं, वैसे ही काम नहीं कर सकते हैं ताकि आपको यह पता लगाने के लिए प्रयोग करने की आवश्यकता हो कि आप इस घटक का उपयोग कब कर सकते हैं।

+3

JFormattedTextField के साथ मुख्य समस्या यह है कि इसे एक सामान्य उपयोग के बजाय दुर्लभ उपयोग के मामले के लिए अनुकूलित किया गया है, जबकि सामान्य कार्य के लिए एक घटक गुम है। एडब्ल्यूटी काफी खराब है, लेकिन स्विंग, फिर से, उन लोगों द्वारा डिजाइन किया गया है जिनके पास जीयूआई प्रोग्रामिंग में कला की स्थिति के बारे में कोई जानकारी नहीं थी, और एक ही गलतियों को दो बार सचमुच खराब कर दिया! यदि जावा और स्विंग के डिजाइनरों ने सिर्फ 1 99 0 के दशक के बाद से डेल्फी या नेक्सट का इंटरफेस बिल्डर ऐसा करने में सक्षम थे और उन्होंने यह कैसे किया, तो भाषा और स्विंग दोनों का उपयोग करना बहुत आसान होगा! –

7

मैं इस समय के लिए JFormattetTextField के साथ संघर्ष कर रहा हूं। मैं अपने प्रतिशत-मूल्य को स्वरूपित करने के लिए NumberFormat.getPercentInstance() का उपयोग करने का प्रयास कर रहा हूं।

सबसे बुरी बात यह है कि .getValue() उपयोगकर्ता जैसा देख रहा है उतना ही वैल्यू वापस नहीं करता है। उदाहरण के लिए यदि मैं स्वरूपित टेक्स्टफील्ड में 25,5% टाइप करता हूं, तो यह 26% पर जाता है, लेकिन .getValue()0.255 देता है। वह बुराई है।

+1

संबंधित प्रश्न: http://stackoverflow.com/questions/2206371/how-to-get-the-same-value-as-the-user-is-seeing-from-a-jformattedtextfield – Jonas

संबंधित मुद्दे