如何使用MouseMotionListener移动矩形?

时间:2014-08-19 13:53:06

标签: mousemotionlistener

我有一个扩展JPanel的类,并且绘制了一个矩形。现在又创建了另一个类,它创建了一个Frame并在其上添加了JPanel类。现在,我想使用MouseMotionListener水平移动矩形。我怎么做?代码会更有帮助。 :)

1 个答案:

答案 0 :(得分:0)

将JPanel添加到JFrame并允许它填充整个框架。

接下来创建一个新类来保存Rectangle数据,例如

class RectangleData {

    int x;
    int y;
    int width;
    int height;

    public RectangleData(int x, int y) {
        this.x = x;
        this.y = y;
        width = 10;
        height = 5;
    }

    public void draw(Graphics g) {
        g.drawRect(x, y, width, height);
    }

    public incX() { x++; }
    public incY() { y++; }
    public decX() { x--; }
    public decY() { y--; }

}

将鼠标监听器附加到JPanel并使用类似的方式确定方向:

Point lastPoint;
RectangleData rect;

private void mouseMoved(MouseEvent e) {
    if (e.getX() > lastPoint.x) rect.incX();
    else if (e.getX() < lastPoint.x) rect.decX();

    if (e.getY() > lastPoint.y) rect.incY();
    else if (e.getY() < lastPoint.y) rect.decY();

    repaint();
}

重绘调用会触发Panel的paint方法,该方法应该包含对矩形绘制方法的调用