Java – drag / move shapes around the JPanel

Yesterday I asked a question about how to draw a bounding box to maintain the internal shape and how to drag and drop the selected shape

The first problem was solved But I had some trouble moving shapes Are there any specific transformations to move the shapes around the JPanel?

I have this 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;
}

This method is called by the listener mousedragged and returns true on success What I want to do is add the difference between the previous drag point and the actual value

When I ran this code, I encountered a problem:

Shape only right / left, up and down do not work

.

Solution

int x = e.getX(),y = e.getX();
int x = e.getX(),y = e.getX();

This may be changed to

int x = e.getX(),y = e.getY();

That's why it works only in the X direction, and you don't actually think about the Y direction

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>