我有一个加载的图像(imagePanel),它在类的前面添加了一个 mouseListener。
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);
谢谢,杰克