2010-02-11 16 views
6

मेरे कस्टम प्रारूपों के साथ काम करने के लिए JFormattedTextField प्राप्त करने के साथ बहुत निराशा के बाद, मैं सोच रहा था कि Formatter या FormatterFactory नियमित अभिव्यक्तियों का उपयोग करता है या नहीं?
":एक नियमित अभिव्यक्ति फॉर्मेटर का उपयोग कर JFormattedTextField?

mFormattedTextField.setFormatterFactory(
    SomeStaticClass.getRegexFormatFactory("^(\\d{1,}h)(\\s([0-5])?[0-9]m)?$")); 

अधिक पृष्ठभूमि के लिए मेरे previous question देखें:

मेरा विचार है कि अगर वहाँ एक है, तो मैं वह एक स्थिर कक्षा में लपेट और इतने तरह यह आह्वान सकता है मैं उपयोगकर्ता को समय अवधि मानों को एक रूप में इनपुट करने की अनुमति देने के लिए एक JFormattedTextField का उपयोग करना चाहता हूं। नमूना वैध मान हैं: 2h 30m72h 15m6h0h"

+0

यह भी देखें http://stackoverflow.com/questions/2234726/jformattedtextfield-input-time-duration-value/2241997#2241997 – trashgod

उत्तर

3

आप पढ़ सकते हैं this article है? मामले कि कॉलेक्ट्रोट्रिकम स्पीशीज दूर लिंक में, यह सब क्या तुम सच में इस तरह, AbstractFormatter के stringToValue विधि ओवरराइड करने की ज़रूरत है कहते हैं:

public Object stringToValue(String text) throws ParseException { 
    Pattern pattern = getPattern(); 

    if (pattern != null) { 
     Matcher matcher = pattern.matcher(text); 

     if (matcher.matches()) { 
      return super.stringToValue(text); 
     } 
     throw new ParseException("Pattern did not match", 0); 
    } 
    return text; 
} 

वास्तव में, एक त्वरित खोज पैदावार कई पूरी तरह से लागू किया, मुक्त समाधान; आपकी जरूरतों के लिए पर्याप्त नहीं थे?

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