2012-03-19 110 views
0

我創建了JLabel lab1。它添加到面板,並添加的MouseMotionListener到標籤當我拖動鼠標時,鼠標返回到原位

lab1.addMouseMotionListener(new InfoListener()); 

這裏是的mouseDragged代碼

public void mouseDragged(MouseEvent me){ 

      lab1=(JLabel)me.getSource(); 
      lab1.setLocation(me.getPoint()); 

    } 

當我點擊並拖動標籤面板的移動點和家庭位置之間的位置交替並不完全移動到我想要的地方。該面板是空佈局,我也最初提到setBounds。

回答

3

這是怎麼回事?

Point p=me.getPoint(); 

lab1.setLocation(p.x+lab1.getX(), p.y+lab1.getY()); 
+0

它的工作原理!謝謝。你能告訴我笏是計算錯誤嗎? – 2012-03-19 08:41:12

+0

如果鼠標在標籤上的座標(鼠標被按下的位置)。假設你按下鼠標左上角。所以點是(1,1)。但是你需要在標籤容器上的位置。所以我們也添加了標籤的位置。 – StanislavL 2012-03-19 08:46:19

+0

雅細。謝謝!! – 2012-03-19 08:50:29

1

1)代碼貼在這裏談論什麼關於你的話題,與SSCCE編輯你的問題表明YOUT問題與mouseDragged(MouseEvent me)

2),請閱讀教程的Drag and Drop,例子here

3)不使用AbsoluteLayout ,正確使用LayoutManager

+0

+1爲教程。我認爲在D&D中,當您將子組件定位在任何用戶放置它們時,Null佈局都可以。 – StanislavL 2012-03-19 08:38:07

+0

@StanislavL一些非常罕見的情況下空佈局似乎允許 - 即使有更好的選擇_with_經理:看到羅布的DragLayout :-) – kleopatra 2012-03-19 09:51:41