小编典典
请记住,Rectangle(和Graphics#fillRect和Graphics#drawRect)不会渲染宽度/高度为负的矩形
你需要两件事…
当前鼠标点(或您的情况下的拖动点)
首次按下鼠标的点(锚点或原点)
您应该从mousePressed事件中获取锚点…
public void mousePressed(MouseEvent e) {
clickPoint = new Point(e.getPoint());
}
然后,您需要确定哪个点最小,并将其作为起点,哪个点最大,并将其用于尺寸。
public void mouseDragged(MouseEvent e) {
int minX = Math.min(e.getX(), clickPoint.x);
int minY = Math.min(e.getY(), clickPoint.y);
int maxX = Math.max(e.getX(), clickPoint.x);
int maxY = Math.max(e.getY(), clickPoint.y);
selection.x = minX;
selection.y = minY;
selection.width = maxX - minX;
selection.height = maxY - minY;
repaint();
}
import