2011-06-23 21 views
9

मेरे पास एक जेस्पिनर है जो minimum से maximum0.1 के चरणों में भिन्न हो सकता है। यह पूरी तरह से ठीक काम कर रहा है। अब, मैंने JSpinner के संपादक को NumberEditor के रूप में सेट किया है क्योंकि उपयोगकर्ता टेक्स्टबॉक्स संपादित कर सकता है और मुझे इससे केवल संख्यात्मक मान चाहिए। यह भी काम कर रहा है, जो भी उपयोगकर्ता प्रवेश कर सकता है, संपादक मुझे केवल mySpinner.getValue().toString(); का उपयोग करके मान प्राप्त करने पर संपादक में केवल संख्या देता है। अब समस्या को समझता है। मैं चाहता हूं कि टेक्स्टबॉक्स केवल संख्यात्मक मानों को स्वीकार करे और .(decimal point), यानी, यदि उपयोगकर्ता 0-9 और . से कुछ भी दर्ज करने का प्रयास करता है, तो उसे टेक्स्टबॉक्स में गूंजना नहीं चाहिए।जेएसपीनर को पूरी तरह से न्यूमेरिक बनाएं

JSpinner mySpinner = new JSpinner(); 
mySpinner.setModel(new SpinnerNumberModel(default,minimum,maximum,0.1)); 
mySpinner.setEditor(new JSpinner.NumberEditor(mySpinner,"##.#")); 

क्या कोई मेरी मदद कर सकता है। धन्यवाद :)

+0

क्या आप कल – mKorbel

+0

से अपनी पोस्ट पर अपनी टिप्पणियां पढ़ रहे हैं, मैंने इसे पढ़ा है, मैं '0.1' पर कदमों में वृद्धि और कमी कर सकता हूं, उस समस्या को हल किया गया था। धन्यवाद :) – Balanivash

उत्तर

24

आप setAllowsInvalid(false) की कोशिश कर सकते इस प्रकार है:

JFormattedTextField txt = ((JSpinner.NumberEditor) mySpinner.getEditor()).getTextField(); 
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false); 

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

+0

तो, ऐसा करने के बाद, क्या मुझे इसे अपने 'जेएसपीनर' के टेस्टबॉक्स से जोड़ने के लिए कुछ भी करना चाहिए? – Balanivash

+0

संख्या। करने के लिए और कुछ नहीं है। –

+0

इस तरह मुझे अक्षरों को इनपुट करने की अनुमति नहीं है, लेकिन समस्या यह है कि यह मुझे '.' इनपुट करने की अनुमति नहीं देता है, जिसे मुझे चाहिए, और मैं फ़ील्ड को साफ़ नहीं कर सकता, इसमें हर समय कम से कम एक संख्या की आवश्यकता होती है, क्या यह है 'JFormattedTextField' – Balanivash