2009-12-03 4 views
2

Java2D를 사용하여 원을 그리면. 서클에 마우스를 가져 가면 텍스트가 표시되는 방법이 있습니까? 즉, 해당 서클의 ID 및 기타 항목을 표시하려고합니다.Java 2D. 호버 오버 서클

답변

0

당신은 모든 센터와 반경을 저장하고 현재 마우스 위치에 대해 테스트해야합니다.

아주 간단한 조작입니다. 마우스 위치의 거리와 원 중 하나의 중심이 반경보다 작 으면 마우스가 안에 있고 원하는 호버 메시지를 그릴 수 있습니다. 수학 보여줍니다 여기에 질문이

:의 Equation for testing if a point is inside a circle

희망하는 데 도움이 ...

합니다 (이 메소드를 포함) 당신을 위해 그것을 할 수있는 다각형 클래스가 존재하지만 없음 S 당신이 원하는 것을 달성하는 방법은 여러 가지가 있습니다

+0

확인 거리가 제곱근을 계산해야하기 때문에 원 방정식 (<=에 대해 == 변경)을 사용하십시오. –

+0

사실. 감사 보정 D : D 내가 그것을 파이썬 코드가 다른 질문 링크를 지적했다 : 나는 제곱 반경에 비해 제곱 거리가 말했다한다 D –

2

: 클래스를 구현하는 원이다. 이것이 하나의 해결책입니다. 원을 만들기 위해 Ellipse2D를 사용한다고 가정합니다. JPanel과 같은 JComponent에서 원을 그리는 것으로 가정합니다.

그래서 타원을 선언합니다.

Shape circle = new Ellispe2D.Double(x, y, width, height); 

는 그런 다음 사용자가 JPanel의 위로 마우스를 이동하면 감지 된 MouseMotionListener를 구현합니다. 그런 다음 (당신이 그림을 어떻게 재정의 중 하나) 페인트() 또는 paintComponent에 방법에

public void mouseMoved(MouseEvent e){ 
     if(circle.contains(e.getPoint())){ 
      //the mouse pointer is over the circle. So set a Message or whatever you want to do 
      msg = "You are over circle 1"; 
     }else{ 
      msg = "You are not over the circle"; 
     } 
    } 

:

g2.fill(circle); 
    g2.drawString(msg, 10, 10); //write out the message 
1

당신은 직접이 작업을 수행 할 수 있을지 모르겠어요. 그러나 간단한 수학을 사용하여 커서 위치를 확인할 수 있습니다. (x-a)^2 + (y-b)^2 = r^2 여기서 x, y는 커서 위치 a, b는 원 중심이고 r은 반경입니다.