昨天我问一个关于如何绘制一个边界框以保持内部形状以及如何拖放所选形状的问题.
第一个问题解决了.但我在移动形状方面遇到了一些麻烦.是否有任何特定的转换来移动jPanel周围的形状?
我有这个代码:
public boolean drag(MouseEvent e) {
if(points.isEmpty()) //if point's vector is empty
return false;
if(!selected)
return false;
int x = e.getX(), y = e.getX();
if (!dragging)
lastMovePoint.setLocation(x, y);
dragging = true;
int deslocX = 0;
int deslocY = 0;
int oldX = -1;
int oldY = -1;
int size = points.size();
for(int i = 0; i < size; i++) {
oldX = lastMovePoint.x;
oldY = lastMovePoint.y;
deslocX = x - oldX;
deslocY = y - oldY;
points.set(i, new Point(points.get(i).x + deslocX, points.get(i).y + deslocY));
//set the vector of points so that when there is a repaint() it repaints the shape with the new
//coordinates
}
lastMovePoint.setLocation(x, y); //set the location of the old point
return true;
}
此方法由侦听器mouseDragged调用,并在成功时返回true.我想要做的是添加前一个拖拽点和实际值之间的差异.
当我运行此代码时,我遇到了一个问题:
形状只向右/向左,向上和向下不起作用……
.