为什么我的对象不能在MouseMoved上移动?

时间:2011-08-08 09:02:06

标签: java swing mouseevent

简单的问题 - 如果对象在.move()内是onMouseMoved()的对象,为什么不会移动?我试图将Breakout写成iTunes U上的斯坦福106A练习的一部分,由于某些原因我无法用桨来跟踪鼠标。我是一个java菜鸟,所以我确信这很简单。有人可以看看这段代码吗?

/** Runs the Breakout program. */
    public void run() {
        setupBoard();
        addMouseListeners();
    }

    /** Provides the initial GCanvas and blocks for the game */
    private void setupBoard(){
        this.setSize(APPLICATION_WIDTH,APPLICATION_HEIGHT);
        addBricks();
        paddle = new GRect(PADDLE_WIDTH, PADDLE_HEIGHT);
        add(paddle, WIDTH/2-PADDLE_WIDTH/2,HEIGHT-PADDLE_Y_OFFSET);

    }

    public void MouseMoved(MouseEvent e){
        paddle.move(e.getX()-paddle.getX(), 0);
        }

    private GRect paddle;
}

在这种情况下,我不确定paddle是否适合作为实例变量,因为它的“值”不会改变(paddle始终是paddle),但如果我只是将它定义为GRect中的新setupBoard我在MouseMoved()方法中收到错误。

1 个答案:

答案 0 :(得分:4)

具有mouseMoved()方法的类需要实现接口MouseMotionListener,并添加动作侦听器。此外,事件处理程序为mouseMoved()而不是MouseMoved()。所以,例如:

public class Game extends JPanel implements MouseMotionListener {
    public void run() {
        addMouseMotionListener(this);
        //...        
    }
    public void mouseMoved(MouseEvent e) {                  
        paddle.move(e.getX()-paddle.getX(), 0); 
    } 
    //...
};