| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||||
Может, стоит поставить
вместо
|
| Автор: akula84 14.1.2005, 16:21 |
| Появилась другая проблема: AccFormat.setAllowsInvalid(true) снимает маску, то есть теперь в номере счета может быть и не 20 символов и разделители работают как отдельные символы И после перехода табом в другое поле маска восстанавливается, а все введенные данные пропадают. Можно как-то иначе попробовать решить проблему? |
| Автор: Domestic Cat 14.1.2005, 17:07 | ||
Проще всего так:
|
| Автор: igon 14.1.2005, 22:32 |
| Вариант - создать N полей по числу сегментов в коде счета и обозвать их соответственно: МФО, валюта, контрольный ключ и т.д. И пользователю будет проще менять конкретный сегмент, чем искать позицию, с которой начинается нужный сегмент в длинной строке. Правда, придется добавить еще и кнопку типа "ОК" |