java - MouseMotion 传感器方法调用

标签 java mouseevent

我遇到了一个问题,无论我研究类和父类(super class)的 API 多久,我都无法弄清楚。

假设我想设计一种游戏,其中鼠标运动控制用于反弹球的 block 的运动,然后球会破坏多色砖 block 。

具体如何让方 block “听”鼠标? 下面的代码是我试图达到预期结果的代码。

/** Breakout Program*/
public class Breakout extends GraphicsProgram implements MouseMotionListener {


...
 /** The Paddle Itself */
    private GRect paddle = new GRect(0, HEIGHT-PADDLEBOTTOM_OFFSET, PADDLEWIDTH, PADDLEHEIGHT);
...

    /** Run the Breakout program. */
    public void run() {

        paddle.setFillColor(Color.BLACK);
        paddle.setFilled(true);

        add(paddle);
        paddle.addMouseListener(this);

        ...

    }



   /** Move the horizontal middle of the paddle to the x-coordinate of the mouse position -
      * -but keep the paddle completely on the board. */ 
    public void mouseMoved(MouseEvent e) { 
        GPoint p= new GPoint(e.getPoint());
        double x = p.getX();
        paddle.setLocation(x, HEIGHT-PADDLEBOTTOM_OFFSET);

        }

}

任何关于我为什么/做错了什么的澄清都会有所帮助,谢谢。

最佳答案

您的类已全部设置为用作鼠标监听器——您只需告诉某个组件向您发送 MouseEvents。为此,您需要实现您已经完成的 MouseMotionListener,所以您已经完成了大部分工作。

剩下要做的就是在 JFrame、JDialog 或您正在使用的任何窗口上调用方法 addMouseMotionListener(this)

在未来,可能值得设置一个单独的类来充当监听器,只是为了让您的代码保持直截了当;最常见的解决方案称为匿名内部类,您可能需要谷歌一下。但是随着最后期限的临近,您所拥有的一切都会正常工作。

关于java - MouseMotion 传感器方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726170/

相关文章:

objective-c - cocoa mousedown 在一个窗口上,鼠标在另一个窗口上向上

javascript - overflow hidden 时检测用户滚动尝试

python - 使用 PyQt4 在 QWidget 上使用 eventFilter

java - TreeSet 忽略值

java - JAXP 撒克逊-he : XMLfile StreamSource doesn't release file access after parsing error

java - 将多个名称保存在字符串数组中

javascript - jQuery 获取 mousedown 和 mouseup 之间的所有 x 和 y

Eclipse 文本编辑器调整大小

java - 为什么我从 Hibernate 多对多关系(外键约束)中得到 java.sql.SQLIntegrityConstraintViolationException

java - 由于java 8中方法的最大结果,如何获取对象