我有一个扩展JPanel的类,并且绘制了一个矩形。现在又创建了另一个类,它创建了一个Frame并在其上添加了JPanel类。现在,我想使用MouseMotionListener水平移动矩形。我怎么做?代码会更有帮助。 :)
答案 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方法,该方法应该包含对矩形绘制方法的调用