so I made a custom shaped JFrame using setShape(s);
and I got it to look how I wanted the problem when you set the JFrame to be undecorated you can\'t drag the Fram
evt.getX()
gives coordinates relative to frame. You should use evt.getXOnScreen()
in stead.Replace
void updateFrameCoords(MouseEvent e) {
int dx = e.getX() - initialPressedX;
int dy = e.getY() - initialPressedY;
for (int i = 0; i < OCTAGON_COORDS_X.length; i++) {
OCTAGON_COORDS_X[i] += dx;
OCTAGON_COORDS_Y[i] += dy;
}
updateFrame();
}
with
void updateFrameCoords(MouseEvent e) {
int dx = e.getXOnScreen() - initialPressedX;
int dy = e.getYOnScreen() - initialPressedY;
for (int i = 0; i < OCTAGON_COORDS_X.length; i++) {
OCTAGON_COORDS_X[i] += dx;
OCTAGON_COORDS_Y[i] += dy;
}
updateFrame();
initialPressedX = e.getXOnScreen();
initialPressedY = e.getYOnScreen();
}
Same in mousePressed
event.
Good luck.
I think your problem is worrying about the shape of the frame when executing the mouseDragged
. I don't think you need to worry about that.
If you just change your method to the below, it works. Test it out.
void updateFrameCoords(MouseEvent e) {
setLocation(getLocation().x + e.getX() - initialPressedX,
getLocation().y + e.getY() - initialPressedY);
}