如何对某个区域内的非GUI对象实现MouseListener?

How to implement MouseListener to a non-GUI object within a certain area?

我正在 Java 制作 "whack a mole" 游戏。在我的游戏面板 class 中,我有一组孔(可以设置为地鼠)。孔是一个单独的对象(有一个孔class)。每个 Hole 对象都是一个直径为 100 像素的圆。图形表示是一个圆圈(fillOval)并且使用了size=100

我可以为 Hole 对象实现 MouseListener 接口吗?有没有可能因为 Hole 没有扩展 JComponent,比如 JPanel?也可以将鼠标侦听器的范围指定到特定区域吗?例如,我只想计算圆形区域内的点击次数,而不是圆孔区域外接正方形内的点击次数。

(我的代码现在没有比我解释的程序结构更多的东西了。)

MouseListener 添加到父组件。让每个 Hole 对象提供一个接受 Point 对象和 returns true / false 的方法,以确定该点是否位于将要绘制的区域内Hole。当用户单击面板时,它应该包含迭代 Hole 对象的代码,依次检查每个对象。

The graphical representation is a circle (fillOval) and size=100 was used.

我会将其升级为使用 Ellipse2D. Since the ellipse implements Shape, it inherits the contains(Point2D) 方法。