JFormattedTextField с использованием средства форматирования регулярных выражений?

После большого разочарования, связанного с получением JFormattedTextField для работы с моими пользовательскими форматами, мне было интересно, есть ли Formatter или FormatterFactory, которые используют регулярные выражения?

Моя идея состоит в том, что если он есть, я мог бы обернуть его в статический класс и вызвать его следующим образом:

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

Дополнительные сведения см. в моем предыдущем вопросе:
Я хочу использовать JFormattedTextField, чтобы пользователь мог вводить значения продолжительности времени в форму. Примеры допустимых значений: 2h 30m 72h 15m 6h 0h


person bguiz    schedule 11.02.2010    source источник
comment
См. также stackoverflow.com/questions/2234726 /   -  person trashgod    schedule 11.02.2010


Ответы (1)


Вы читали эту статью? В случае, если эта ссылка сгниет, она говорит, что все, что вам действительно нужно сделать, это переопределить метод stringToValue AbstractFormatter, например:

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

На самом деле быстрый поиск дает несколько полностью реализованных бесплатных решений; ни один из них не был достаточным для ваших нужд?

person Alan Moore    schedule 11.02.2010