如何从Java2D生成的图形生成事件

我在java.awt.geom.Ellipse2D的帮助下制作了一个Ellipse

现在,我希望每当用户点击该椭圆时,就会生成一个事件,以便我可以监听该事件并根据生成该事件的椭圆执行后续任务。

下面是一个简单的对象绘图程序示例 ,它演示了单击,拖动和多个选择。 还要考虑JGraph ,它是一个更高级的图形可视化库。

我将假设这是一个问题,想要一种方法来聆听使用Graphics2D.draw在某些Swing组件上绘制的椭圆上进行的鼠标点击。

简单的答案是,无法从曲面上绘制的图形生成鼠标事件。

但是,这是另一种方法:

  1. 将从中绘制椭圆的Ellipse2D对象存储在List
  2. 在用户要单击的Swing组件上注册MouseListener
  3. 从鼠标单击生成的MouseEvent ,确定单击鼠标的位置(使用MouseEvent.getPoint ),并使用Ellipse2D.contains检查上述List包含的任何Ellipse2D是否发生鼠标单击。方法。

如果没有大量的手工编码的东西(让canvas或其他东西,听老鼠事件,并在点击椭圆时计算自己),我认为这是不可能的。

如果你想做更多这样的考虑场景图。 有了它,椭圆本身就是一个对象,你可以注册事件监听器。


编辑为对评论的回复:

场景图: https ://scenegraph.dev.java.net/谷歌获取更多资源:scenegraph java和是的。 Scenegraph是JavaFX的一部分,但与纯Java(没有FX)很好地配合