我有一个问题,我必须用我的代码解决。所以我有一个棋盘,当我点击我想拖动的东西时(例如检查器),我就可以看到一张标签,里面保存着它的图片(我知道这不是一个整洁的解决方案,但我被告知要这样做)在由公式计算的适当位置。我想使用相同的公式来计算mouseDragged事件下检查器的坐标,但这是问题所在。如果我只是通过事件中的简单getX()或getY()来设置标签的位置,那么当我移动鼠标时,它的左上角是我的鼠标指针下的“跳跃”。我想它粘到光标我点击它的地方,所以我做了这样的事情:在Swing中拖动一个对象
public void mouseDragged(MouseEvent evt) {
int col = (evt.getX() - 4)/40;
int row = (evt.getY() - 4)/40;
int setX = evt.getX()-(col*40);
int setY = evt.getY()-(row*40);
if (dragged)
inv.setLocation(evt.getX()-setX+42, evt.getY()-setY+37);
其中山坳是列的X坐标我想糖衣片从检查(等是行),setX只是我在下面使用的一个变量。这些计算对我来说似乎没有问题,但是它们让我只能以一种根本不移动的方式来填塞棋子(就像我拖着透明的东西一样),当我最终进入棋盘上的新位置时它被涂在那里等等。不是流畅的拖拽,但拖拽时会拖拽到光标下的字段中。
+42和+37只是一些数字来计算它在适当的地方,因为董事会不是从(0,0)开始。
参见本[示例](http://stackoverflow.com/a/2562685/230513)和[变化](HTTP:/ /stackoverflow.com/a/2563350/230513)。 – trashgod