Частичное совпадение в MaskFormatter для jFormattedTextField - PullRequest
0 голосов
/ 16 марта 2010

Как настроить MaskFormatter и JFormattedTextField, чтобы разрешить частичное совпадение?

Например:

Я хочу, чтобы пользователь мог вводить числа с этой маской "## ###### ####", поэтому, если пользователь вводит "123456789123", средство форматирования изменяет его на "12 345678 9123" ( он добавляет пробелы после 2-го и 8-го символов).

Однако я также хочу, чтобы пользователь мог вводить «12346578», преобразовывать в «12 345678» и при этом оставаться действительным значением (поэтому я могу получить его с помощью jFormatedTextField1.getValue ())

Это часть моего кода:

JFormattedTextField jFormattedTextField1;
MaskFormatter mf;

mf = new MaskFormatter("## ###### ####");
jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(mf));

Я попытался установить focusLostBehavior в PERSIST, чтобы значение не сбрасывалось после выхода из jFormattedTextField1, но таким образом я получаю нулевое значение при использовании вызова jFormattedTextField1.getValue ()

1 Ответ

0 голосов
/ 17 марта 2010

Решил его, установив маску, используя звездочки, и установив ее действительные символы в виде чисел и пробела тоже .

JFormattedTextField jFormattedTextField1;
MaskFormatter mf;

mf = new MaskFormatter("** ****** ****");
mf.setValidCharacters("0123456789 ");
jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(mf));

Тогда я всегда могу обрезать полученную строку с помощью getValue (), чтобы удалить завершающие пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...