Выделите многоугольники с указанием мыши - PullRequest
1 голос
/ 24 мая 2011

Я очень плохо знаком с Java Swing и работаю над заданием. У меня есть несколько полигонов на моем компоненте. Когда я вхожу в многоугольник, он должен выделяться (то есть заполняться каким-то цветом).

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

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Прошли ли вы разделы MouseListener / MouseMotionListener учебников по Swing?Если нет, и если у вас еще ничего не написано, я предлагаю вам просмотреть учебные пособия и посмотреть на использование MouseMotionListener.Вы не хотите слушать mouseEntered, но, скорее всего, mouseMoved.Примером псевдокода может быть:

in MouseMotionListener or MouseAdapter
   mouseMoved method
      get position of mouse pointer via the MouseEvent parameter.
      For loop through list of Polygons 
         If mouse inside of polygon, highlight it.
         Else, un-highlight it.
      End for loop
   End of mouseMoved method.
end MouseMotionListener or MouseAdapter
2 голосов
/ 24 мая 2011

java.awt.Polygon имеет метод contains(double x, double y), который возвращает true, если координаты мыши x, y находятся внутри многоугольника.

Координаты (x, y) получаются из реализации MouseMotionListener в контейнере, где вы рисуете свои фигуры, и в реализованном методе public void mouseMoved(MouseEvent e) у вас есть e.getX() и e.getY() для получения координат и проверки если они в вашем полигоне (ах).

...