我用JPanel在屏幕上画一个正方形。当我使用鼠标拖动时,它工作正常,几乎可以随心所欲地去任何地方。每次我点击正方形时,正方形都会自动移动,左上角会直接移动到鼠标下方。我应该怎么做才能使正方形不会自行替换并保持在鼠标下方?感谢您的任何帮助。
记下
您是组件top-left
坐标之间的差异搬家和mousePressed
位置。
当你得到新的职位时,只需减去这个差异。
在这里,我试图通过编码来解释它。让myJPanel
成为您想要的组件移动。那么这是可以为您工作的MouseAdapter
。新仓位存储在 newPosition
变量。
new MouseAdapter(){
int diffx = 0, diffy = 0;
public void mousePressed(MouseEvent e) {
Point topLeft = myJPanel.getLocation();
Point mouseDn = e.getPoint();
diffx = mouseDn.x - topLeft.x;
diffy = mouseDn.y - topLeft.y;
}
public void mouseDragged(MouseEvent e) {
Point mouseDr = e.getPoint();
int newX = mouseDr.x - diffx;
int newY = mouseDr.y - diffy;
Point newPosition = new Point(newX, newY);
}
};