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

3

我用java.awt.geom.Ellipse2D制作了一个椭圆。

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

3个回答

3

这里是一个简单的对象绘制程序示例,演示了点击、拖动和多选功能。还可以考虑使用JGraph,它是一个更高级的图形可视化库。


1

我认为这是不可能的,除非有大量手工编码的东西(让画布或其他东西监听鼠标事件,并自己计算是否点击了椭圆)。

如果你想做更多类似的事情,考虑使用场景图。这样,椭圆将成为一个独立的对象,你可以注册事件监听器。


作为对评论的回应进行编辑:

场景图:https://scenegraph.dev.java.net/ 搜索更多资源:场景图Java 是的,场景图是JavaFX的一部分,但也可以很好地与纯Java(无FX)配合使用。


请问您能否提供一个场景图的链接。我之前没有听说过这个。我能在Swing GUI上用它绘制椭圆吗? - Amit

1

我假设您想要知道一种方法来监听在某个Swing组件上绘制的椭圆形上所发生的鼠标点击事件,使用{{link1:Graphics2D.draw}}。

简单地说,没有办法从绘制在表面上的图形中生成鼠标事件。

不过,这里提供一种替代方案:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接