クラスの早い段階で mouseListener が追加されたイメージ (imagePanel) をロードしました。
ImagePanel はドラッグされていますが、画像 (0,0) の左上隅だけです。以下のロジックは、マウス座標をオフセットしようとした私の試みですが、効果がないように見えます.mousePressed()が呼び出されていない可能性があります.
class MouseMotionHandler extends MouseMotionAdapter implements MouseListener
{
int diffX, diffY;
public void mousePressed(MouseEvent e)
{
diffX = e.getX() - imagePanel.getImageX();
diffY = e.getY() - imagePanel.getImageY();
}
public void mouseDragged(MouseEvent e)
{
imagePanel.setX(e.getX()-diffX);
imagePanel.setY(e.getY()-diffY);
imagePanel.repaint();
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
}
どんな助けでも素晴らしいでしょう。
編集:解決済み
問題は、リスナーを初期化した場所でした。mousePressed() は MouseListener クラスの一部であり、mouseDragged() は MouseMotionListener クラスの一部です。そのため、それぞれに個別のリスナーを追加する必要がありました。
MouseMotionHandler mouseMotionHandler = new MouseMotionHandler();
imagePanel.addMouseListener(mouseMotionHandler);
imagePanel.addMouseMotionListener(mouseMotionHandler);
ありがとう、ジャック