2012-10-28 3 views
0

숙제가 있습니다. 작은 그래픽 프로그램의 도우미 메서드를 작성해야합니다. 내가 가지고있는 문제는 내가 오류가 있다는 말을 계속하고있다.도움말 방법을 호출하는 방법

기호 - 메소드 drawPolygon (gp, int, int)을 찾을 수 없습니다.

무엇이 누락 되었습니까?

추신. 나는 GraphicsPanel 코드가 여기에 없다는 것을 알고 있지만 "기호를 찾을 수 없습니다"오류가 발생하는 이유가 궁금합니다. 을 쓸 때 drawPolygon (gp, 50, 4)을 단지으로 작성하면 오류없이 컴파일되지만 패널에는 아무 것도 그려지지 않습니다.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class G5 { 
    public static void drawPolygon(GraphicsPanel gp, int sideCount, int sideLength) { 
     for (int i = 0; i < 4; i++) { 
      gp.draw(sideLength); 
      gp.turn(360/sideCount); 
     } 
    } 

    public static void main(String[] args) { 
     GraphicsPanel gp = new GraphicsPanel(); 
     gp.setBackgroundColor(Color.BLACK); 
     gp.delay(1000); 
     int x = gp.getWidth()/2; 
     int y = gp.getHeight()/2; 
     gp.setLocation(x, y); 

     gp.setColor(Color.RED); 
     gp.drawPolygon(gp, 50, 4); 

     gp.clear(); 
    } 
} 
+1

G5.drawPolygon(gp, 50, 4); 

를 사용 http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now ([I는 숙제 태그를 제거] - 비공식적으로 사용되지 않음). 어쨌든 질문에서 분명해야합니다 :) – Patrick

답변

0

이 메서드는 G5 클래스의 정적 메서드입니다. GraphicsPanel의 인스턴스 메서드는 아닙니다. 그래서 당신은 당신이하고있는 것처럼 호출 할 수 있으려면

G5.drawPolygon(gp, 50, 4); 

대신

gp.drawPolygon(gp, 50, 4); 

사용하여 호출해야합니다, 방법은 GraphicsPanel 클래스 내에서 정의되어야한다 (또는 어떤 것 그 수퍼 클래스), static 키워드없이.

this section of the Java tutorial을 읽으면 인스턴스와 정적 방법의 차이점을 이해할 수 있습니다.

+0

오 !!! 나는 나중에있어! ><감사합니다 SOOOO> !!! 편집 (컴파일 된, 괜찮아요,하지만 실제로 실행되지 않습니다, 아무 것도 그래픽 화면에서 발생합니다) – Sylver

+0

정적 여기서 중요하지 않습니다. 인스턴스에서 정적 메서드를 호출 할 수 있다는 점에 유의하십시오. 인스턴스를 무시할뿐입니다. – ignis

+0

물론 중요합니다. 메서드가 정적이 아닌 경우 OP는 도우미 메서드를 호출하기 위해 새 G5를 인스턴스화해야합니다. 인스턴스 메서드로 정적 메서드를 호출하는 것은 매우 나쁜 방법입니다. –

0
gp.drawPolygon(gp, 50, 4); 

클래스에없는 GraphicsPanel 인스턴스에서 메소드를 찾고 있습니다. 그것이 정적 방법이면 대신

관련 문제