您可以通过在 JPanel 中实现 MouseMotionListener 来创建自己的可重用、可拖动组件。您必须跟踪鼠标位置、图像和面板尺寸,以及您希望显示的图像的当前偏移量。
private Image image;
private int imageWidth, imageHeight, width, height;
private int mouseX, mouseY;
private int offsetX, offsetY;
实现 mouseMoved 方法来简单地跟踪鼠标位置。
public void mouseMoved(MouseEvent e)
{
mouseX = e.getX();
mouseY = e.getY();
}
在 mouseDragged 方法中,更新偏移量以反映位置的变化。
public void mouseDragged(MouseEvent e)
{
int mx = e.getX();
int my = e.getY();
offsetX += (mouseX - mx);
offsetY += (mouseY - my);
// don't let offset exceed bounds of image
offsetX = Math.max(offsetX, 0);
offsetX = Math.min(offsetX, imageWidth - width);
offsetY = Math.max(offsetY, 0);
offsetY = Math.min(offsetY, imageHeight - height);
mouseX = mx;
mouseY = my;
repaint();
}
最后,重写paint方法以正确的偏移量显示图像。
@Override
public void paint(Graphics g)
{
g.drawImage(image, -offsetX, -offsetY, this);
}
记得在构造函数中将自己添加为 mouseMotionListener!
this.addMouseMotionListener(this);