ウィンドウD&D移動

public class Main extends JFrame {
 
 static Point pt;
 
 Main() {
  setSize(100, 100);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  addMouseListener(
   new MouseListener() {
    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {//@
     pt = e.getPoint();
    }
    public void mouseReleased(MouseEvent e) {//B
     pt = null;
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
   }
  );
  addMouseMotionListener(
   new MouseMotionListener() {
    public void mouseDragged(MouseEvent e) {//A
     Point currentPt = e.getLocationOnScreen();
     setLocation(currentPt.x - pt.x, currentPt.y - pt.y);//
    }
    public void mouseMoved(MouseEvent e) {}
   }
  );
 }
 
 public static void main(String[] args) {
  Main ma = new Main();
  ma.setVisible(true);
 }
}