2012-03-27 2 views
0

파이 모양의 메뉴를 8 개의 파이가 같은 크기의 타원 안에있는 자바로 그려야합니다. 문제는 하나의 호를 타원형 다음 호의 가운데에 겹쳐서 이전 호를 겹쳐서 그 색을 바꿀 때 문제가 발생하지만 8 개의 동등한 크기의 원을 서로 다른 색으로 원 안에 채워야합니다. 아무도 내가 이것을 어떻게 얻을 수 있는지 말해 줄 수 있습니까? 여기 내 코드가있다.타원 안에 여러개의 채워진 호를 그리기

public class mypanel extends JPanel { 

    int mx = 20; 
    int my = 20; 
    int ms = 120; 
    int mg = 120; 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D) g; 
     g2.setColor(Color.red); 
     g2.drawOval(mx, my, 100, 100); 
     g2.fillArc(mx, my, 100, 100, 0, 45); 
     g2.setColor(Color.blue); 
     g2.fillArc(mx, my, 100, 100, 0, 60); 
     g2.setColor(Color.white); 
     g2.fillArc(mx, my, 100, 100, 0, 20); 
     g2.setColor(Color.black); 
     g2.fillArc(mx, my, 100, 100, 0, 80); 
     g2.setColor(Color.blue); 
     g2.fillArc(mx, my, 100, 100, 0, 95); 

    } 
} 
+1

왜 사용하지를 [태그 : JFreeChart의]? – trashgod

+0

@trashgod는 이벤트를 정의 할 수 있습니다. 예를 들어 나는 사용자가 붉은 색 원형을 클릭 할 때 직사각형을 그려야 할까? – james

답변

4

이 트릭을 수행해야합니다

Color[] c = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW, 
       Color.GREEN, Color.CYAN, Color.MAGENTA, Color.PINK}; 
    for(int i=0; i<8; ++i){ 
     g.setColor(c[i]); 
     g.fillArc(x, y, w, h, i*45, 45); 
    } 
+0

고마워 친구 .. :) – james

+0

+1 잘 분해! – trashgod

관련 문제