2012-10-15 4 views
1

다음 코드를 사용하여 JPanel에 BufferedImage를 그렸습니다.JPanel 이미지에 마우스 수신기를 추가하는 방법은 무엇입니까?

protected void paintComponent(Graphics g) { 
    if (image != null) { 
     super.paintComponent(g); 

     Graphics2D g2 = (Graphics2D) g; 

     double x = (getWidth() - scale * imageWidth)/2; 
     double y = (getHeight() - scale * imageHeight)/2; 
     AffineTransform at = AffineTransform.getTranslateInstance(x, y); 
     at.scale(scale, scale); 
     g2.drawRenderedImage(image, at); 
    } 
} 

어떻게 이미지에 마우스 클릭 수신기를 추가 할 수 있습니까? 또한 JPanel이 아닌 이미지의 클릭 좌표를 얻고 싶습니다.

+1

첫째, 당신은 항상의 상태에 관계없이'super.paintComponent' 전화 확인 'image' – MadProgrammer

+1

더 나은 도움을 더 빨리 얻으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+1

이것 좀 봐주세요 [예제] (http://stackoverflow.com/a/11890169/1057230) –

답변

4

평상시와 같이 창에 MouseListener을 추가하십시오. Point 이미지의 사각형 내에 있는지 확인하기 위해 mouseClicked 방법 검사에서

... 모든

public void mouseClicked(MouseEvent evt) { 

    if (image != null) { 
     double width = scale * imageWidth; 
     double height = scale * imageHeight; 
     double x = (getWidth() - width)/2; 
     double y = (getHeight() - height)/2; 
     Rectangle2D.Double bounds = new Rectangle2D.Double(x, y, width, height); 
     if (bounds.contains(evt.getPoint()) { 
      // You clicked me... 
     } 
    } 
} 
관련 문제