コンポーネントをウィンドウ内にドラッグできるように、ドラッグアンドドロップアルゴリズムを作成しました。
フレームウィンドウを移動するまでは、うまく機能します...
ウィンドウを移動すると、コンポーネントの位置は、フレームをクリックしてドラッグしたときにフレームを移動した距離に等しい距離からシフトします。
誰もが理由を知っていますか?
コードサンプル:
public void mousePressed(final MouseEvent e) {
if(SwingUtilities.isLeftMouseButton(e)) {
origin = panel.getLocationOnScreen();
panel.setLocation(origin.x, origin.y-panel.getHeight()/2);
view.add(panel, JLayeredPane.DRAG_LAYER);
}
}
public void mouseDragged(MouseEvent e) {
if(SwingUtilities.isLeftMouseButton(e)) {
panel.setLocation(e.getLocationOnScreen().x - panel.getWidth()/2, e.getLocationOnScreen().y - panel.getHeight()/2);
}
}