Arrastrar / mover una forma alrededor de jPanel

Ayer hice una pregunta sobre cómo dibujar un cuadro delimitador para mantener una forma dentro ycómo arrastrar y soltar esa forma seleccionada.

La primera pregunta está resuelta. Pero tengo algunos problemas para mover la forma. ¿Hay alguna transformación específica para mover una forma alrededor del jPanel?

Tengo este codigo:

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;
}

El oyente mouseDragged llama a este método y devuelve verdadero en caso de éxito. Lo que intento hacer es agregar la diferencia entre el punto anterior de dragg y el real.

Cuando ejecuto este código tengo un problema:

La forma solo va a derecha / izquierda, arriba y abajo no funciona ...

.

Respuestas a la pregunta(2)

Su respuesta a la pregunta