此代码位于我的mouseDragged函数中,它拖动未修饰的JFrame
if (mouse.y < 25 && !closePol.contains(mouse)){
getParent().getParent().getParent().getParent().setLocation(new Point(e.getXOnScreen() - mouse.x, e.getYOnScreen() - mouse.y));
}
每当我将鼠标移出JFrame时,我都会设置mouse = new Point()
代码。
它工作正常,但有一个错误。每当我开始使用mouse.y >= 25
拖动并拖出窗口时,就会发生此。窗口将左上角移动到鼠标。
答案 0 :(得分:2)
如图here所示,您需要通过当前鼠标点和上一个鼠标点之间的差异来偏移渲染点。提供两个Point
,textPt
和mousePt
,
this.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int dx = e.getX() - mousePt.x;
int dy = e.getY() - mousePt.y;
textPt.setLocation(textPt.x + dx, textPt.y + dy);
mousePt = e.getPoint();
repaint();
}
});