2012-03-19 5 views
0

나는 JLabel lab1을 만들었습니다. 패널에 추가하고 라벨 여기마우스를 끌 때 마우스가 원래 위치로 돌아갑니다

lab1.addMouseMotionListener(new InfoListener()); 

의 mouseDragged 코드가에 모든 MouseMotionListener를 추가

public void mouseDragged(MouseEvent me){ 

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

    } 

내가 클릭하고 패널의 이동 포인트와 홈 위치 사이에 라벨을 위치 교대를 드래그 내가 원하는 곳으로 정확히 이동하지는 않습니다. 패널은 null 레이아웃에 있으며 초기에는 setBounds에 대해서도 언급했습니다.

답변

3

이 항목에 대한 자료보기

Point p=me.getPoint(); 

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

작동합니다! 감사. 와트가 계산 실수라고 말할 수 있습니까? –

+0

레이블에 마우스 좌표가있는 경우 (마우스를 누른 위치). 왼쪽 상단 모서리에서 마우스를 누르십시오. 그래서 요점은 (1,1)입니다. 라벨 용기에 위치가 필요합니다. 그래서 레이블의 위치도 추가합니다. – StanislavL

+0

예. 감사!! –

1

1) 코드를 여기에 게시 주제, mouseDragged(MouseEvent me)

2 행해져 Yout 문제를 보여 SSCCE하여 질문을 수정)를 참조하시기 바랍니다 튜토리얼에 대해 아무것도 이야기하지에 대한 Drag and Drop, 예

3 here) AbsoluteLayout를 사용하지 않는 , 적절하게 사용하십시오 LayoutManager

+0

+1 자습서의 경우 D & D에서는 사용자가 드롭하지 않을 때 하위 구성 요소를 배치 할 때 null 레이아웃이 좋습니다. – StanislavL

+0

@StanislavL null 레이아웃이 허용되는 매우 드문 경우 중 일부 - 더 나은 옵션도 _with_ 관리자가 있습니다. Rob의 DragLayout :-)을 참조하십시오. – kleopatra

관련 문제