我是Java Swing的新手,我正在做一项任务。我的组件上有一些多边形。当我进入一个多边形时,它必须高亮显示(即用某种颜色填充)。
当我转到下一个多边形时,它必须高亮显示,前一个多边形应该被擦除(即正常状态)。我找到了一些例子,但它们使用的是“鼠标按下”事件,但我的是不同的。
发布于 2011-05-24 07:03:27
你读过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-24 07:13:02
java.awt.Polygon有一个contains(double x, double y)
方法,如果x,y鼠标坐标在多边形内部,则该方法返回true。
(x,y)坐标来自于在绘制形状的容器上实现MouseMotionListener
,在实现的public void mouseMoved(MouseEvent e)
方法中,您有e.getX()
和e.getY()
来获取坐标并检查它们是否在多边形中。
https://stackoverflow.com/questions/6103813
复制相似问题