2011-03-05 16 views
5

मुझे पता है कि आप JFormattedTextField कन्स्ट्रक्टर के प्रारूप को पास कर सकते हैं, लेकिन आप रनटाइम पर फ़ॉर्मेटर कैसे बदलेंगे? उदाहरण के लिए मेरे पास एक फ़ील्ड है जिसे पूर्णांक मानों के लिए बनाया जाना चाहिए, लेकिन जब एक निश्चित कॉम्बो बॉक्स का मूल्य बदल जाता है, तो अब फ़ील्ड को फ्लोट मान लेना चाहिए।रनटाइम पर JFormattedTextField के प्रारूप को कैसे बदलें?

उत्तर

6

आप अपने ऑब्जेक्ट पर setFormatterFactory(JFormattedTextField.AbstractFormatterFactory) का आह्वान कर सकते हैं।

आप इस फैशन में इसका इस्तेमाल कर सकते हैं:

// Define the number factory. 
NumberFormat nf = NumberFormat.getIntegerInstance(); // Specify specific format here. 
NumberFormatter nff = new NumberFormatter(nf); 
DefaultFormatterFactory factory = new DefaultFormatterFactory(nff); 

// Define the decimal factory. 
DecimalFormat df = new DecimalFormat(); // And here.. 
NumberFormatter dnff = new NumberFormatter(df); 
DefaultFormatterFactory factory2 = new DefaultFormatterFactory(dnff); 

// Then you set which factory to use. 
JFormattedTextField field = new JFormattedTextField(); 
field.setFormatterFactory(factory); 
//field.setFormatterFactory(factory2);   

जब आपके घटना होती है तो बस कारखाने की स्थापना की।

ध्यान दें कि DefaultFormatterFactory का निर्माता कई प्रारूपक ले सकता है; एक डिफ़ॉल्ट, एक डिस्प्ले प्रारूप जब फोकस नहीं होता है, फोकस होने पर एक संपादन प्रारूप होता है, और फ़ील्ड के शून्य मान के लिए एक शून्य प्रारूप होता है।

+0

क्या आपने इसे अनुशंसा करने से पहले एक JFormattedTextField उदाहरण पर सीधे सेटफॉर्मेटर को कॉल करने का प्रयास किया है? आप जानते हैं कि यह एक संरक्षित विधि है, है ना? –

+0

इस तथ्य को याद किया कि setFormatter() संरक्षित है। –

+0

@netrom फ़ॉर्मेटर और प्रारूप वास्तव में वही नहीं हैं। हालांकि मैं एक फॉर्मेट फैक्ट्री सेट कर सकता हूं, मुझे नहीं लगता कि यह फ़ील्ड के प्रारूप को कैसे बदल देगा। हो सकता है कि मुझसे कुछ छूट रहा हो। यदि आपके पास एक उदाहरण है तो मैं इसे देखना चाहूंगा। धन्यवाद। – m0s

1

यह example डिफ़ॉल्ट प्रारूप में बदलाव जोड़ने के लिए InputVerifier का उपयोग करता है। यह Date के लिए डिज़ाइन किया गया है, लेकिन आप Number पर दृष्टिकोण को अनुकूलित करने में सक्षम हो सकते हैं।

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