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

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

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

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

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

1 Ответ

3 голосов
/ 11 февраля 2010

Вы читали эту статью ? В случае, если эта ссылка исчезает, в ней говорится, что все, что вам действительно нужно сделать, переопределить метод 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;
}

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

...