2012-10-28 79 views
0

我有一個家庭作業分配,我們被要求爲小圖形程序編寫一個輔助方法。我遇到的問題是它一直說我有一個錯誤。如何調用幫助方法

無法找到符號 - 方法drawPolygon(gp,int,int)。

我錯過了什麼?

PS。我知道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

[I除去作業標籤(http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now -officially棄用)。無論如何,這個問題應該清楚:) – Patrick

回答

0

該方法是G5類的靜態方法。這不是GraphicsPanel的實例方法。所以你必須使用

G5.drawPolygon(gp, 50, 4); 

,而不是

gp.drawPolygon(gp, 50, 4); 

爲了能夠調用它就像你正在做的調用它,該方法將有GraphicsPanel類中被定義(或任何其超類),沒有static關鍵字。

閱讀this section of the Java tutorial瞭解實例和靜態方法的區別。

+0

哦!我有你,呃! >。<非常感謝你!編輯(我編譯,沒關係,但它不會實際運行,在圖形屏幕上沒有任何反應) – Sylver

+0

靜態在這裏並不重要。請注意,您可以在實例上調用靜態方法,它只會忽略實例。 – ignis

+0

當然重要。如果該方法不是靜態的,OP將不得不實例化一個新的G5來調用輔助方法。並且調用靜態方法作爲實例方法是非常非常糟糕的做法。 –

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

您正在尋找在GraphicsPanel實例的方法,而不是在你的類。因爲它是一個靜態方法,使用

G5.drawPolygon(gp, 50, 4); 

代替