Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JFormattedTextField


Автор: akula84 14.1.2005, 13:28
Хочется сделать вот какую вещь:
Сделать поле в которое можно вводить номер счета.
То есть изначально в поле такой вариант(при запуске)
[#####-###-#-############]
Потом пользователь вводит в это поле значение. Например он хочет ввести последние 4 цифры счета. То есть должно получиться так:
[#####-###-#-########2222]

Пытаюсь реализовать следующим образом:


MaskFormatter AccFormat;
AccFormat = new MaskFormatter("#####-###-#-############");
AccFormat.setValidCharacters("1234567890");
AccFormat.setPlaceholder("####################");
AccFormat.setOverwriteMode(true);

JFormattedTextField clAcc = new JFormattedTextField(AccFormat);



Не работает следующая вещь:Нельзя вводить цифры поверх изначательной маски #####-###-#-############
Необходжимо сначала ее полностью стереть, а только потом вводить. Как этого избежать? Чтобы результат мог получиться например таким
[#####-###-#-########2222]

Заранее спасибо за помощь

Автор: Domestic Cat 14.1.2005, 15:59
Может, стоит поставить
Код

AccFormat.setAllowsInvalid(true);

вместо
Код

AccFormat.setOverwriteMode(true);

Автор: akula84 14.1.2005, 16:21
Появилась другая проблема:
AccFormat.setAllowsInvalid(true) снимает маску, то есть теперь в номере счета может быть и не 20 символов и разделители работают как отдельные символы
И после перехода табом в другое поле маска восстанавливается, а все введенные данные пропадают.
Можно как-то иначе попробовать решить проблему?

Автор: Domestic Cat 14.1.2005, 17:07
Проще всего так:
Код

clAcc.setValue("00000-000-0-000000000000");

Автор: igon 14.1.2005, 22:32
Вариант - создать N полей по числу сегментов в коде счета и обозвать их соответственно: МФО, валюта, контрольный ключ и т.д. И пользователю будет проще менять конкретный сегмент, чем искать позицию, с которой начинается нужный сегмент в длинной строке. Правда, придется добавить еще и кнопку типа "ОК" smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)