Предоставляет ли SWT Canvas инструменты для перемещения / щелчка мышью по активным областям? - PullRequest
2 голосов
/ 20 ноября 2010

Я создаю приложение с Java и SWT, и рабочая область создается на Canvas.Мне нужно, чтобы определенные области (элементы управления) на холсте вызывали событие при наведении курсора мыши или нажатии.Конечно, это можно сделать, прослушивая MouseMoveEvent и проверяя местоположение мыши вручную, но я хотел бы знать, предоставляет ли SWT более простой способ сделать это.

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 ноября 2010

Насколько я знаю, нет возможности автоматизировать это. Вам нужно будет зарегистрировать слушателей мыши и изучить координаты x & y вручную.

Другой подход может заключаться в добавлении отдельных Canvas объектов во вложенную Canvas. Таким образом, вы можете добавить слушателей к отдельным элементам управления. Это, однако, будет использовать больше памяти (поскольку базовый объект имеет буфер, а также элемент управления сверху), и перерисовка будет более интенсивной ЦП.

Мои личные предпочтения связаны с первой техникой.

0 голосов
/ 28 ноября 2010

Спасибо за ответ, Пол. Я наконец создал ArrayList объектов Rectangle для каждого элемента управления. Всякий раз, когда срабатывает событие mousemove, я перебираю каждый Rectangle и вызываю Rectangle.contains () с координатами мыши. Это решение оказалось очень организованным.

В моем случае управляющие события однородны (все они делают одно и то же), но если у кого-то есть несколько управляющих действий, Rectangle.data может использоваться для хранения объекта Command.

...