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

时间:2018-03-16 04:27:05

标签: java swing awt mouselistener java-2d

我正在制造一个"打击鼹鼠" Java中的游戏。在我的游戏面板类中,我有一系列的孔(可以设置为摩尔)。孔是一个单独的对象(有一个Hole类)。每个Hole对象都是一个直径为100 px的圆。图形表示是一个圆圈(fillOval),并使用了size=100

我可以为Hole对象实现MouseListener接口吗?是否可以,因为Hole不会延伸JComponent,例如JPanel?是否可以将鼠标监听器的范围指定到特定区域?例如,我只想计算圆形区域内的点击次数,而不是围绕圆孔区域的广场内的点击次数。

(目前我的代码并没有比我作为程序结构所解释的更多。)

1 个答案:

答案 0 :(得分:1)

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

  

图形表示是一个圆圈(fillOval),并使用了size=100

我将其升级为使用Ellipse2D。由于椭圆实现了Shape,因此它继承了contains(Point2D)方法。