2010-02-11 52 views
6

在讓JFormattedTextField與我的自定義格式一起工作之後,我想知道是否有使用正則表達式的FormatterFormatterFactory使用正則表達式格式化程序的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 2010-02-11 03:55:08

回答

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; 
} 

實際上,快速搜索產量幾個完全實現的,免費的解決方案;這些都不足以滿足您的需求?