2010-02-11 14 views
6

Après beaucoup de frustration à obtenir un JFormattedTextField pour travailler avec mes formats personnalisés, je me demandais s'il y avait un Formatter ou FormatterFactory qui utilise des expressions régulières?JFormattedTextField en utilisant un formatter d'expression régulière?

Mon idée est que s'il y a un, alors je pourrais l'envelopper dans une classe statique et l'invoquons comme ceci:

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

Voir mon previous question pour plus d'arrière-plan:
" Je veux utiliser un JFormattedTextField pour permettre à l'utilisateur de valeurs de durée de temps d'entrée dans un formulaire. Exemples valeurs valides sont: 2h 30m72h 15m6h0h"

+0

Voir aussi http://stackoverflow.com/questions/2234726/jformattedtextfield-input-time-duration-value/2241997#2241997 – trashgod

Répondre

3

Avez-vous lu this article? Dans le cas où un lien pourrit loin, il dit tout ce que vous avez vraiment besoin de faire remplacer la méthode de AbstractFormatter stringToValue, comme ceci:

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

En fait, un rendement de recherche rapide plusieurs entièrement mises en œuvre, les solutions libres; étaient pas de celles qui suffisent à vos besoins?