2010-02-11 6 views
6

Nach viel Frust mit einem JFormattedTextField, um mit meinen benutzerdefinierten Formaten zu arbeiten, fragte ich mich, ob es eine Formatter oder FormatterFactory, die reguläre Ausdrücke verwendet?JFormattedTextField mit einem regulären Ausdruck Formatierer?

Meine Idee ist, dass, wenn es einen gibt, dann könnte ich es in einer statischen Klasse wickeln und es wie so aufrufen:

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

mein previous question Siehe für mehr Hintergrund:
" Ich möchte ein JFormattedTextField verwenden, um dem Benutzer zu ermöglichen, Zeitdauerwerte in ein Formular einzugeben. Beispiel gültige Werte sind: 2h 30m72h 15m6h0h"

+0

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

Antwort

3

Haben Sie this article lesen? Im Fall, dass verrottet verknüpfen, sagt es alles, was Sie wirklich AbstractFormatter die stringToValue Methode, wie dies außer Kraft setzen müssen tun:

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

Eigentlich eine schnelle Suche Ausbeuten mehr voll umgesetzt, freie Lösungen; war das nicht genug für dich?