@Override
public Shape getShape() {
final Rectangle2D.Double result = new Rectangle2D.Double();
result.setFrameFromDiagonal(getStart(), getEnd());
//FIX this is causing square to move when going opposite direction
result.setRect(result.getX(), result.getY(),
result.getHeight(), result.getHeight());
return result;
}
所以这是我使用Rectangle2D.Double绘制正方形的代码。 getStart()和getEnd()是从mouseDrag事件返回的点。当我向右或向上拖动时,它按预期工作并创建一个正方形。当我向左或向下拖动时,正方形在绘制时随着拖动移动。我是Java swing和paint组件的新手。想知道是否有人知道造成这种情况的原因和原因?
答案 0 :(得分:1)
你需要考虑一些专业:
px = Math.min(x,x2);
int py = Math.min(y,y2);
int pw=Math.abs(x-x2);
int ph=Math.abs(y-y2);
result.setRect(px, py, pw, ph);