2017-04-15 1 views
2

자바 그래픽을 배우고 있습니다. 나는 단순한 인물을 그리려하고있다.fillPolygon()으로 사각형을 그릴 수없는 이유

public class Draw extends JPanel { 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     int[] xpoints = new int[] { 20, 50, 80 }; 
     int[] ypoints = new int[] { 40, 10, 40 }; 

     g.fillPolygon(xpoints, ypoints, 3); 

     int[] recXp = new int[] { 20, 80, 20, 80 }; 
     int[] recYp = new int[] { 50, 60, 50, 60 }; 

     g.fillPolygon(recXp, recYp, 4); 

    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     Draw panel = new Draw(); 
     frame.add(panel); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(800, 600); 

    } 
} 

을 내가

import java.awt.Graphics; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Draw extends JPanel { 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     int[] xpoints = new int[] { 20, 50, 80 }; 
     int[] ypoints = new int[] { 40, 10, 40 }; 

     g.fillPolygon(xpoints, ypoints, 3); 

     g.fillRect(20, 50, 60, 10); 

    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     Draw panel = new Draw(); 
     frame.add(panel); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(800, 600); 

    } 
} 

가 왜 이런 일이 일어나고 사용할 필요가 원하는 것을 달성하기 위해 : 그러나 나는 다음과 같은 코드가 제대로 그려지지 않습니다 것으로 나타났습니다? 내가 놓친 게 있니? 죄송합니다. 이것이 사소한 질문이라면, 저는 Java를 더 잘 이해하려고 노력하고 있습니다.

답변

2
int[] recXp = new int[] { 20, 80, 20, 80 }; 
    int[] recYp = new int[] { 50, 60, 50, 60 }; 

두 세트의 점만 있습니다.

네 가지 점 집합이 필요합니다. 사각형의 각 모서리에 하나씩. 추천

예시 : 왼쪽

  1. 가기/(20, 50)
  2. 위쪽/오른쪽
  3. 바닥/오른쪽 (X는 동일하다 (X는 Y가 동일하며, 상기 상이한) 상기 y는 다르다.
  4. 하/좌 (X는 첫번째와 동일, Y는 상기 저장 임)가 I로 \t \t로 변경
+0

t [] recXp = 새로운 int [] {20, 80, 80, 20}; \t \t int [] recYp = 새로운 int [] {50, 50, 60, 60}; 및 제대로 표시, 바보 같은 질문에 대한 미안 해요 :) – Moe

+2

배우고 싶다면 어리석은 질문이 있습니다. – c0der

+1

@moe, c0der에 동의합니다. 때로는 메서드 사용이 우리를 혼란스럽게합니다. 당신은 시도한 것을 보여주는 방법을 테스트하기 위해 멋진 간단한 [mcve]를 만들었습니다. 우리는 귀하가 이러한 노력을 할 때 도움을 기쁘게 생각합니다. – camickr

관련 문제