2014-11-22 2 views
0

JPanel을 사용하여 화면에 사각형을 그립니다. MouseDragged를 사용할 때 제대로 작동하고 원하는 곳으로갑니다. 사각형을 클릭 할 때마다 사각형이 자동으로 이동하고 왼쪽 상단이 마우스 바로 아래로 이동합니다. 사각형이 스스로 대체되지 않고 마우스 바로 아래에 있도록하려면 어떻게해야합니까? 도움 주셔서 감사합니다.화면상의 마우스와 Dragndrop의 JPanel 사이의 틈

답변

1

이동하고 mousePressed 위치의 구성 요소의 좌표 top-left 사이의 차이를 고려하십시오.
그리고 새로운 포지션을 얻으면 그 차이를 빼면됩니다.
여기서는 코딩을 통해 설명하려고했습니다. myJPanel을 으로 이동하려는 구성 요소로 지정하십시오. 그럼 당신을 위해 일할 수있는 MouseAdapter입니다. 새로운 위치는 newPosition 변수에 저장됩니다.

new MouseAdapter(){ 
    int diffx = 0, diffy = 0; 
    public void mousePressed(MouseEvent e) { 
     Point topLeft = myJPanel.getLocation(); 
     Point mouseDn = e.getPoint(); 
     diffx = mouseDn.x - topLeft.x; 
     diffy = mouseDn.y - topLeft.y; 
    } 

    public void mouseDragged(MouseEvent e) { 
     Point mouseDr = e.getPoint(); 
     int newX = mouseDr.x - diffx; 
     int newY = mouseDr.y - diffy; 
     Point newPosition = new Point(newX, newY); 
    } 
};