JavaSwing窗体拖拽移动
核心代码:
```java
/ ----- 窗口拖动 ----- /
final java.awt.Point origin = new java.awt.Point();
canvas.addMouseListener(new MouseAdapter() {
// 按下(mousePressed 不是点击,而是鼠标被按下没有抬起)
public void mousePressed(MouseEvent e) {
// 当鼠标按下的时候获得窗口当前的位置
origin.x = e.getX();
origin.y = e.getY();
isTuo = true;
}
@Override
public void mouseReleased(MouseEvent e) {
isTuo = false;
}
});
canvas.addMouseMotionListener(new MouseMotionAdapter() {
// 拖动(mouseDragged 指的不是鼠标在窗口中移动,而是用鼠标拖动)
public void mouseDragged(MouseEvent e) {
if (!isTuo)
return;
// 当鼠标拖动时获取窗口当前位置
java.awt.Point p = frame.getLocation();
// 设置窗口的位置
// 窗口当前的位置 + 鼠标当前在窗口的位置 - 鼠标按下的时候在窗口的位置
frame.setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y);
}
});
```