2010-02-11 17 views
6

Dopo un po 'di frustrazione nel far funzionare un JFormattedTextField con i miei formati personalizzati, mi chiedevo se c'era uno Formatter o FormatterFactory che utilizza le espressioni regolari?JFormattedTextField utilizzando un formattatore di espressioni regolari?

La mia idea è che se ce n'è uno, quindi ho potuto avvolgerla in una classe statica e invoco in questo modo:

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

Vedere il mio previous question per più di fondo:
" Voglio utilizzare un JFormattedTextField per consentire all'utente di inserire valori di durata in un modulo. Esempi di valori validi sono: 2h 30m72h 15m6h0h"

+0

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

risposta

3

Hai letto this article? Nel caso in cui il collegamento via marcisce, si dice tutto quello che ha realmente bisogno di fare l'override del metodo AbstractFormatter stringToValue, in questo modo:

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

In realtà, un rapido rendimenti di ricerca diversi pienamente attuate, soluzioni gratuite; non sono stati sufficienti per le tue esigenze?