Ziehen / Verschieben einer Form um jPanel

Gestern habe ich eine Frage gestellt, wie man einen Begrenzungsrahmen zeichnet, um eine Form darin zu halten, undSo ziehen Sie die ausgewählte Form mit der Maus.

Die erste Frage ist gelöst. Aber ich habe einige Probleme, die Form zu bewegen. Gibt es spezielle Transformationen, um eine Form im jPanel zu verschieben?

Ich habe diesen Code:

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

Diese Methode wird vom Listener mouseDragged aufgerufen und gibt im Erfolgsfall true zurück. Was ich versuche, ist, den Unterschied zwischen dem vorherigen Punkt von dragg und dem tatsächlichen hinzuzufügen.

Wenn ich diesen Code ausführe, habe ich ein Problem:

Die Form geht nur nach rechts / links, auf und ab geht nicht ...

.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage