1
4
是的,但是您需要做一些工作(参见java.awt.Shape)。基本上你需要跟踪一个形状列表。JPanel将接收一个鼠标事件,您可以将其转换为(x,y)坐标。然后可以调用Shape.contains(x,y)来查看是否单击了各种形状。 这将适用于圆、多边形、圆弧等;但是,对于Line2D来说,它不会那么容易工作,但是您可以使用Line2D.intersects(),在鼠标单击周围有一个小矩形(这也是一个很好的UI,因为您不想强制用户精确地单击一个难以看到的像素)。 |
2
2
没有“行事件”这样的概念,除非您决定实现一个。
我建议加一个
|
4
0
当画布接收到鼠标按下事件时,遍历形状集合,直到找到位于鼠标坐标下的形状。最简单的方法是让您的形状实现一个接口,该接口定义某种hitPoint(intx,inty)方法。这样你的矩形就可以实现contains(),直线可以实现intersects()或者图形路径,你可以考虑一些填充,等等。 更进一步,您的形状应该定义自己的绘制(graphics2dg)方法,以便您可以轻松地执行选择框之类的操作,或者将绘制模式设置为“异或”以使形状更容易“移动”。画布的paintComponent方法只需遍历图形集合,对每个图形调用shape.draw(g),并将提供给paintComponent方法的图形实例传递给它。 |
user1424739 · 如何获得子地块的绘图区域大小? 2 年前 |
Nor-s · 如何使用ASIMP正确加载模型? 2 年前 |
Makogan · 3D纹理大小影响程序输出,不会引发错误 6 年前 |
Karsten W. · 底部R中的旋转箭头 6 年前 |
168grani · Matplotlib图形的线条平滑 6 年前 |