![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Привет всем!
Вот такая задача: хочу отловить нажатие клавиши клавиатуры на компоненте JTextField, но в момент, когда символ клавиши еще не прорисовался в JTextField-е. Например чтобы запретить ввод определенных символов в это поле. Я уже без результатно делал прехват след. методов: processKeyEvent, processEvent. Хотел перехватить dispatchEventImpl() -- не получилось, у него видимость пакета java.awt... Что делать, помогите, плз... |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 7 Всего: 151 |
Попробуй keyPressed и keyReleased.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Lamer George, ты имеешь ввиду добавить слушателя? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 7 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Для этого есть способы получше, т.к. так ты не контролируешь например то что вставляеться из буфера обмена. Если тебе нужно именно это могу рассказать как -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Нет, слушатель не поможет, он отработает своё и символ все равно пролетит в поле. Я прехватывал даже processKeyEvent, который работает до слушателей, Вызов этого метода стоит раньше с цепочке передачи сообщений, но даже не вызывая метода processKeyEvent суперкласса, символ все равно пролетал в поле....
Конечно рассказывай! Если это долгий процесс посылай меня к доке |
||||
|
|||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
К доке ты хонечно сходи, она тетка умная, много чего интерестного знает А примерчик я уже выкладвал, так что могу еще раз его привести:
Любой текстовый компонент работает с Document, который содержит в себе данные (в том числе и данные о форматировании, если это поддерживается документом). И у него есть возможность установить фильтр, который будет решать, какие изменния в документе моно пропустить какие нет. Теперь немного о реализации, ты получаешь изменения в документе и объект FilterBypass, вот именно ему ты и должен сообщить какие изменения в документе можно провести. Если ты ему ничего не сообщишь, то никакие изменения не пройдут. Также можно менять тип изменений, например по insert-у halt удалять все из документа. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Фанкс. Ознакомлюсь, попробую "затачить" под свою нужду......
Но, все же вопрос, не ужели нельзя чтобы событие просто не дошло до компонента. Я могу замаскировать сообщения клавиатуры - вообще отключить события клавиатуры, могу поглатить, чтоб оно до слушателей не дошло, но мне пререхватить хочется..... ну хоть разочек! Это сообщение отредактировал(а) MoonCat - 14.2.2006, 21:25 |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 7 Всего: 151 |
Но ведь можно насильственно сбросить его в предыдущее состояние. Добавлено @ 21:34 Есть же, кстати, какой-то метод, который блокирует дальнейшую обработку события, кроме твоей. Добавлено @ 21:37 consume()? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
AWTEvent.consume() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "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. |