1

我对 Java Swing 很陌生,我正在做一个任务。我的组件上有一些多边形。当我进入一个多边形时,它必须突出显示(即填充一些颜色)。

当我转到下一个多边形时,它必须突出显示并且前一个应该被擦除(即正常状态)。我找到了一些示例,但这些示例使用的是“mousepressed”事件,但我的不同。

4

2 回答 2

4

您是否浏览过 Swing 教程的 MouseListener/MouseMotionListener 部分?如果没有,并且您还没有写任何东西,我建议您查看教程并查看使用 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
于 2011-05-23T23:03:27.240 回答
2

java.awt.Polygon 有一个contains(double x, double y)方法,如果 x,y 鼠标坐标在多边形内,则返回 true。

(x,y) 坐标来自MouseMotionListener在您绘制形状的容器上实现 a 并在您拥有的已实现方法public void mouseMoved(MouseEvent e)中获取坐标并检查它们是否在您的多边形中。e.getX()e.getY()

于 2011-05-23T23:13:02.257 回答