![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 4 Всего: 8 |
До сих пор использовал JTextField (там проблем нет), теперь дернула нелегкая попытаться использовать
JFormattedTextField для такой задачи: Надо динамически отслеживать ввод каждого символа в поле, и, в зависимости от некоего расчета, давать пользователю дальше вводить строку или нет. Т.е. мне НЕ надо проверять значения ПОСЛЕ выхода из поля, а именно во время ввода каждого символа. Покопавшись, я обнаружил, что setDocumentFilter фильтр для JFormattedTextField не действует (из исходного кода понятно почему). Задание своего форматера, с перекрыванием getDocumentFilter() и возвратом своего фильтра, осуществляющего нужные мне действия, ничего не дает. Может я фильтр неграмотно назначаю?
Что-то теги кода не срабатывают? Не хотелось бы тут приводить тоны путаного кода, поэтому у меня простой вопрос: Можно ли динамически проверять вводимые символы (ну это-то можно, хотя бы через DocumentListener), но не просто проверять, а предпринимать какие-то изменения в JFormattedTextField, например, подменить один символ другим, или просто запретить его ввод и т.п.? И, главное, как это сделать грамотно? |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
А вы не приводите тонны кода, сделайте небольшой пример. Я делал свой DocumentFilter в своем форматёре для JFormattedTextField - все отлично работает.
Это сообщение отредактировал(а) w1nd - 14.12.2006, 23:27 -------------------- ![]() ![]() |
|||
|
||||
| carper |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 4 Всего: 8 |
OK. Попробую, ну вроде как мысль иллюстрирует. Итак, сперва простейший фильтр.
Теперь не менее простой форматтер, скорее всего, уже здесь я допускаю какую-то глупую ошибку. Вроде как я так понял у SUN, что назначение фильтра для JFormattedTextField идет через переопределение getDocumentFilter(), но это не работает.
Собственно поле, отличающееся от стандартного только попыткой задать свой форматтер, сама попытка срабатывает, т.е. можно в форматторе, скажем задать другой разделитель групп и это будет учтено, а вот фильтр вообще не работает!
Класс для тестирования всего получившегося:
|
||||||||||
|
|||||||||||
| carper |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 2.3.2005 Репутация: 4 Всего: 8 |
Все, на будущее если не выспаться и назвать форматтером формат, то формат форматтером от этого не станет.
Прошу прощение за дурацкую ошибку. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Хороший способ понять что-либо - попытаться объяснить другому -------------------- ![]() ![]() |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |