Распространение событий мыши на несколько дочерних компонентов для синхронного поведения при рисовании - PullRequest
2 голосов
/ 17 декабря 2011

Как указано в заголовке, у меня есть JPanel с двумя или более дочерними компонентами JPanel, и я хотел бы распространить событие мыши на все дочерние компоненты.Например, у меня есть перетаскиваемое событие moused, которое рисует прямоугольник в одном из дочерних объектов JPanel.Я хотел бы, чтобы другие дети JPanel рисовали то же самое синхронизированным способом.

Первая встреченная проблема заключается в том, что, как правило, только самый верхний компонент, находящийся «под» событием мыши, получает уведомление о конкретном событии мыши, котороеимеет смысл для большинства приложений.Вместо этого я (почти почти) получил искомое поведение, отказавшись от обычно используемого маршрута MouseListener и используя enableEvents () для включения различных событий мыши, а затем переопределив processMouseEvent () и processMouseMotionMotionEvent (), так что каждая функция распределяет события мыши (скоординаты от родительских координат) каждому дочернему JPanel для рисования необходимо.Однако я не уверен, что выбранный мною маршрут является лучшим, и хотел бы получить еще несколько мнений по этому вопросу.

Еще один метод, который я хотел бы реализовать, - это переопределить метод dispatchEvent (AWTEvent e) иотправлять события каждой дочерней панели, вызывая dispatchEvent для каждой из них, но, к сожалению, dispatchEvent (AWTEvent e) не может быть переопределен.

Любая помощь общего характера будет принята с благодарностью.

1 Ответ

1 голос
/ 17 января 2012

Отделите входной код от кода, который должен быть нарисован.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...