我有一個問題,我必須用我的代碼解決。所以我有一個棋盤,當我點擊我想拖動的東西時(例如檢查器),我就可以看到一張標籤,裏面保存着它的圖片(我知道這不是一個整潔的解決方案,但我被告知要這樣做)在由公式計算的適當位置。我想使用相同的公式來計算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