鼠标拖出窗口

时间:2014-05-10 13:55:54

标签: java swing mouse

此代码位于我的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拖动并拖出窗口时,就会发生此this。窗口将左上角移动到鼠标。

1 个答案:

答案 0 :(得分:2)

如图here所示,您需要通过当前鼠标点和上一个鼠标点之间的差异来偏移渲染点。提供两个PointtextPtmousePt

的实例
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();
    }
});