我用java.awt.geom.Ellipse2D制作了一个椭圆。
现在,我希望每当用户单击该椭圆时,都会生成一个事件,以便我可以监听该事件并根据生成该事件的椭圆执行后续任务。
我认为这是不可能的,除非有大量手工编码的东西(让画布或其他东西监听鼠标事件,并自己计算是否点击了椭圆)。
如果你想做更多类似的事情,考虑使用场景图。这样,椭圆将成为一个独立的对象,你可以注册事件监听器。
作为对评论的回应进行编辑:
场景图:https://scenegraph.dev.java.net/ 搜索更多资源:场景图Java 是的,场景图是JavaFX的一部分,但也可以很好地与纯Java(无FX)配合使用。
我假设您想要知道一种方法来监听在某个Swing组件上绘制的椭圆形上所发生的鼠标点击事件,使用{{link1:Graphics2D.draw
}}。
简单地说,没有办法从绘制在表面上的图形中生成鼠标事件。
不过,这里提供一种替代方案:
Ellipse2D
对象存储在一个List
中。MouseListener
,让用户单击该组件。MouseEvent
中,使用MouseEvent.getPoint
确定鼠标单击的位置,并使用Ellipse2D.contains
方法检查鼠标单击是否发生在前述List
中包含的任何Ellipse2D
中。