2011-11-24 5 views
3

아래 코드에서 마우스 수신기를 사용하여 마우스의 XY 좌표를 얻은 다음 다시 칠하기를 요청했습니다. 페인트 방법 내에서 위치에 대해 동일한 XY 좌표를 사용하여 사각형을 그렸습니다. 사각형은 마우스 포인터에서 멀어 지지만 따라옵니다. 직사각형의 왼쪽 위 모서리가 마우스 포인터를 터치 할 것으로 예상됩니다.Graphic2D 객체가 Java에서 마우스 포인터를 정확히 따라 가게하려면 어떻게해야합니까?

내가 잘못 했나요?

왜 내 마우스 포인터와 Rectangle 객체 사이에 거리가 있습니까? 이 혼동 될 수 있도록

public void mouseMoved(MouseEvent e){ 
    x = e.getX(); 
    y = e.getY(); 

    repaint(); 
} 

public class Canvas extends JPanel{ 
    Canvas(){} 

    public void paint(Graphics g){ 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setPaint(Color.red); 
     g2.fillRect(x, y, 50, 50);   
    } 
} 

답변

4
  1. 이 Canvas 클래스를 호출하지 마십시오, 그 이름하여 AWT 구성 요소가있다.

  2. 사용자 지정 그리기는 paint() 메서드가 아니라 JPanel의 paintComponent() 메서드를 재정 의하여 수행됩니다.

  3. MouseListener를 패널에 추가하는 위치를 표시하지 않습니다. 아마 프레임에 추가하고있을 것입니다.

자세한 도움이 필요하면 SSCCE에 문제가 있음을 게시하십시오.

+0

맞음, 프레임에 MouseListener를 추가하고있었습니다. 다른 조언과 정보도 주셔서 감사합니다. –