我没试过
不过我想通过mousePressed事件定义起点和拖动对象
UNDO的时候用setLocation之类的方法写回起点应该可以达到你的要求
具体的只能你自己实现了