2010-02-11 11 views
6

Después de mucha frustración con la obtención de un JFormattedTextField para trabajar con mis formatos personalizados, me preguntaba si había un Formatter o FormatterFactory que utiliza expresiones regulares?JFormattedTextField utilizando un formateador de expresiones regulares?

Mi idea es que si hay uno, entonces podría envolverlo en una clase estática e invocarlo así:

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

Ver mi previous question para obtener más antecedentes:
" Quiero usar un JFormattedTextField para permitir al usuario ingresar valores de duración de tiempo en un formulario. Los valores válidos son de muestra: 2h 30m72h 15m6h0h"

+0

Véase también http://stackoverflow.com/questions/2234726/jformattedtextfield-input-time-duration-value/2241997#2241997 – trashgod

Respuesta

3

¿Has leído this article? En caso de que el enlace se pudre, se dice que todo lo que realmente necesita hacer reemplazar el método de AbstractFormatter stringToValue, así:

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 realidad, una rápida búsqueda rendimientos varias plenamente implementada en soluciones libres; ¿ninguno de esos fue suficiente para tus necesidades?

Cuestiones relacionadas