It looks as if you are adding the difference between the mouse's current position and the polygon's position to the polygon's new position on each frame. What you want to do is only add the difference between the mouse's new position and its position the last time that mouseDragged()
was called.
You can do this fairly easily. After your for
loop, add the following:
xMousePressed = evt.getX();
yMousePressed = evt.getY();
Then the next time mouseDragged()
is called, it will update the polygon's position relative to its position in the previous frame.