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

标签 java swing awt mouselistener java-2d

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

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

(除了我所解释的程序结构之外,我的代码目前没有更多内容。)

最佳答案

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

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

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

关于java - 如何对某个区域内的非GUI对象实现MouseListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49313215/

相关文章:

java - Swing/AWT 双缓冲在 Linux 上非常慢

java - 坐标转换困境,用户坐标到设备坐标?

java - 如何在maven中使用jetty 9插件?

java - Java 源文件是否可以在编译时运行任意代码?

java - 当 SwingNode 的父级调整大小时,SwingNode 内容不调整大小

java - 如何使用 Java 使用 ImageMagick 对一批文件实现 .psd 到 .jpg 转换

java - 如何将 SOAP 消息解析为 Jaxb 类

Java - 同步方法导致程序大幅减速

java - 更新 JLabel 的文本而不改变其他所有内容

Java重绘不更新