如何从Java2D生成的图形生成事件
我在java.awt.geom.Ellipse2D的帮助下制作了一个Ellipse
现在,我希望每当用户点击该椭圆时,就会生成一个事件,以便我可以监听该事件并根据生成该事件的椭圆执行后续任务。
下面是一个简单的对象绘图程序示例 ,它演示了单击,拖动和多个选择。 还要考虑JGraph ,它是一个更高级的图形可视化库。
我将假设这是一个问题,想要一种方法来聆听使用Graphics2D.draw
在某些Swing组件上绘制的椭圆上进行的鼠标点击。
简单的答案是,无法从曲面上绘制的图形生成鼠标事件。
但是,这是另一种方法:
- 将从中绘制椭圆的
Ellipse2D
对象存储在List
。 - 在用户要单击的Swing组件上注册
MouseListener
。 - 从鼠标单击生成的
MouseEvent
,确定单击鼠标的位置(使用MouseEvent.getPoint
),并使用Ellipse2D.contains
检查上述List
包含的任何Ellipse2D
是否发生鼠标单击。方法。
如果没有大量的手工编码的东西(让canvas或其他东西,听老鼠事件,并在点击椭圆时计算自己),我认为这是不可能的。
如果你想做更多这样的考虑场景图。 有了它,椭圆本身就是一个对象,你可以注册事件监听器。
编辑为对评论的回复:
场景图: https ://scenegraph.dev.java.net/谷歌获取更多资源:scenegraph java和是的。 Scenegraph是JavaFX的一部分,但与纯Java(没有FX)很好地配合