2012-03-19 71 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