屏幕上的鼠标和Dragndrop上的JPanel之间的间隙



我用JPanel在屏幕上画一个正方形。当我使用鼠标拖动时,它工作正常,几乎可以随心所欲地去任何地方。每次我点击正方形时,正方形都会自动移动,左上角会直接移动到鼠标下方。我应该怎么做才能使正方形不会自行替换并保持在鼠标下方?感谢您的任何帮助。

记下

您是组件top-left坐标之间的差异搬家和mousePressed位置。
当你得到新的职位时,只需减去这个差异。
在这里,我试图通过编码来解释它。让myJPanel成为您想要的组件移动。那么这是可以为您工作的MouseAdapter。新仓位存储在 newPosition变量。

new MouseAdapter(){
    int diffx = 0, diffy = 0;
    public void mousePressed(MouseEvent e) {
        Point topLeft = myJPanel.getLocation();
        Point mouseDn = e.getPoint();
        diffx = mouseDn.x - topLeft.x;
        diffy = mouseDn.y - topLeft.y;
    }
    public void mouseDragged(MouseEvent e) {
        Point mouseDr = e.getPoint();
        int newX = mouseDr.x - diffx;
        int newY = mouseDr.y - diffy;
        Point newPosition = new Point(newX, newY);
    }
};

最新更新