Разрешение родителю обрабатывать событие мыши, если событие не было использовано дочерним элементом

У меня есть этот кадр:

альтернативный текст

Вот что происходит:

  1. Когда я нахожусь над панелью Розоватый, панель прокрутки работает нормально.
  2. Когда я навожу указатель мыши на Темно-серый JTextArea, панель прокрутки не получает событие.

В общем, мой вопрос заключается в том, как я могу убедиться, что родитель компонента получает событие, если компонент не обработал это конкретное событие, даже если компонент имеет прослушиватель и включен?

Возможно, подойдет конкретный пример.

Вы можете видеть калькулятор, калькулятор отображается на масштабируемой панели изображений и может увеличивать и уменьшать масштаб с помощью события Ctrl + Wheel, но когда я не нажимаю Ctrl, я хотел бы, чтобы панель прокрутки получала событие и прокручивала порт просмотра. (Я думаю, это суммирует это)

Адам.


person TacB0sS    schedule 08.10.2010    source источник
comment
Я мог бы взять прослушиватели JScrollPane и добавить их в каждую панель, но я ищу более обобщенное правильное решение, а не наводить беспорядок в иерархии компонентов и слушателей, которые работали бы только в одном случае.   -  person TacB0sS    schedule 08.10.2010


Ответы (2)


Хотя это и не совсем «аккуратно», мой ответ на этот вопрос можно адаптировать для того, что вы хотите.

Вместо MOUSE_EVENT_MASK вы должны использовать AWTEvent.MOUSE_WHEEL_EVENT_MASK и передавать событие в область прокрутки, когда состояние управляющей клавиши подходит.

(Если повезет, кто-нибудь опубликует «настоящий» механизм для пересылки события родительскому компоненту).

person Ash    schedule 08.10.2010
comment
Не совсем то, что я имел в виду, я посмотрю, как я это сделаю... Спасибо за Идею. - person TacB0sS; 08.10.2010

Как я описал в своем комментарии, и он отлично работает...

person TacB0sS    schedule 25.04.2011