Java 如何在屏幕上自定义移动JWindow

Java 如何在屏幕上自定义移动JWindow,java,drag-and-drop,jwindow,Java,Drag And Drop,Jwindow,我需要的方式移动屏幕上的窗口与拖放。我用鼠标和鼠标运动监听器解决了这个问题,但它只起到部分作用(如果我想向上移动窗口,它就不起作用)。这是代码 private boolean drag; ... @Override public void mouseDragged(MouseEvent e) { if(e.getY() < 18){ p = new Point(e.getXOnScreen(), e.getYOnScreen()); drag

我需要的方式移动屏幕上的窗口与拖放。我用鼠标和鼠标运动监听器解决了这个问题,但它只起到部分作用(如果我想向上移动窗口,它就不起作用)。这是代码

private boolean drag;
    ...
@Override
public void mouseDragged(MouseEvent e) {
    if(e.getY() < 18){
        p = new Point(e.getXOnScreen(), e.getYOnScreen());
        drag = true;
    }
}

@Override
public void mouseReleased(MouseEvent e) {
    if(drag){
        System.out.println((e.getXOnScreen() + " " + p.x));
        System.out.println((e.getYOnScreen() + " " + p.y));
        this.setLocation(this.getX() + (e.getXOnScreen() - p.x), this.getY() + (e.getYOnScreen() - p.y));
        drag = false;
    }
}
私有布尔拖动;
...
@凌驾
公共无效鼠标标记(鼠标事件e){
如果(如getY()<18){
p=新点(e.getXOnScreen(),e.getYOnScreen());
阻力=真;
}
}
@凌驾
公共无效MouseEvent(MouseEvent e){
如果(拖动){
System.out.println((e.getXOnScreen()+“”+p.x));
System.out.println((e.getYOnScreen()+“”+p.y));
this.setLocation(this.getX()+(e.getXOnScreen()-p.x),this.getY()+(e.getYOnScreen()-p.y));
阻力=假;
}
}