![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Saboteur |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2007 Где: Минск Репутация: нет Всего: нет |
Приветствую всех!
Столкнулся со странным багом - хочу разобраться в механизме происходящего. Есть NumField наследник jTextField, в него вводятся единицы измерения в футах, рядом есть простой label в который выводятся эти же данные уже в метрах. На поле вешается слушатель:
баг состоял в том что отображение в label всегда опаздывало на 1 действие. Пример: нажимается кнопка "1" на label выводится 0 ещё раз нажимается кнопка "1" (в NumField число 11), на label 30 см. и т.п. Если же заменить keyTyped на keyReleased всё работает синхронно. После долгого ковыряния я пришел к следующему выводу: Когда мы нажимаем на кнопку (курсор находится внутри eNumField, на котором висит слушатель keyPressed или keyTyped) генерируется событие, внутри вызывается метод обновляющий надпись (отображение футов в метры), когда этот метод запускается он берёт значение из eNumField и это значение - старое! т.е. кнопка уже нажата, keyPressed отработал,а новое значение в ячейку ещё не попало => надпись отображается неверно. В случае с keyReleased значение в eNumField успевает изменится. А значит надпись изменится правильно. Проблема в том что всё вышенаписанное мои рассуждения и я не нашел детального описания механизма в Оракловской документации. Это просто то поведение которое я наблюдаю в данном случае. Где можно почитать про этоповедение. Кроме оракловской документации ![]() Это сообщение отредактировал(а) Saboteur - 5.10.2011, 16:20 |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Еще одно подтверждение, что практика - критерий истины. Не все описано в документации. Или для того, чтобы понять, что скрывается за словами, нужен эксперимент. Это обычное дело. |
|||
|
||||
Saboteur |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2007 Где: Минск Репутация: нет Всего: нет |
В итоге всё было переписал с помощью ChangeListener.
![]() Вдохновился примерои кода вот отсюда.
Попутно удалось удалить полкласса legathy-кода. PROFIT! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |