【发布时间】:2018-02-22 21:27:42
【问题描述】:
昨天我问了一个问题,关于如何绘制一个边界框来容纳一个形状,以及如何拖放选定的形状。
第一个问题解决了。但是我在移动形状时遇到了一些麻烦。是否有任何特定的转换可以在 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。我想要做的是添加前一点的拖动和实际之间的差异。
当我运行这段代码时,我遇到了问题:
形状只能向右/向左,上下不起作用...
.
【问题讨论】:
-
请考虑创建和发布您的minimal example program,这是一个我们可以编译、测试的小型测试程序,它可以向我们展示您的问题,并且我们可以尝试提供帮助你改进。还有为什么是 AWT Canvas 而不是 Swing JPanel?
-
是JPanel 是的。我已经编辑了。对不起