Java 如何调用帮助方法

Java 如何调用帮助方法,java,graphics,panel,Java,Graphics,Panel,我有一个家庭作业,要求我们为一个小图形程序编写一个助手方法。我的问题是,它一直在说我有一个错误 找不到符号-方法drawPolygon(gp、int、int) 我错过了什么 另外,我知道GraphicsPanel代码不在这里,但我更想知道为什么会出现“找不到符号”错误。当我只写drawPolygon(gp,50,4)时,它将编译而没有任何错误,但它也不会在面板中绘制任何东西 import java.awt.*; import java.awt.event.*; import javax.swin

我有一个家庭作业,要求我们为一个小图形程序编写一个助手方法。我的问题是,它一直在说我有一个错误

找不到符号-方法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();
    }
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共级G5{
公共静态void drawPolygon(GraphicsPanel gp、int sideCount、int sideLength){
对于(int i=0;i<4;i++){
总图(边长);
总成转动(360/侧计);
}
}
公共静态void main(字符串[]args){
GraphicsPanel gp=新GraphicsPanel();
挫折背景色(黑色);
总延误(1000);
int x=gp.getWidth()/2;
int y=gp.getHeight()/2;
总成设置位置(x,y);
总成设置颜色(颜色为红色);
绘图多边形总成(总成,50,4);
gp.clear();
}
}

该方法是G5类的静态方法。它不是GraphicsPanel的实例方法。所以你必须使用

G5.drawPolygon(gp, 50, 4);
而不是

gp.drawPolygon(gp, 50, 4);
为了能够像现在这样调用它,必须在GraphicsPanel类(或其任何超类)中定义该方法,而不使用static关键字

阅读以了解实例方法和静态方法之间的区别

 gp.drawPolygon(gp, 50, 4);
您正在
GraphicsPanel
实例中寻找方法,而不是在类中。由于这是一种静态方法,请使用

G5.drawPolygon(gp, 50, 4);

相反

。不管怎样,这个问题应该很清楚:)哦!!!我找到你了,嗯!!>非常感谢你!!!编辑(我编译过,很好,但它实际上不会运行,在图形屏幕中不会发生任何事情)静态在这里并不重要。请注意,您可以在实例上调用静态方法,它只会忽略该实例。这当然很重要。如果该方法不是静态的,OP必须实例化一个新的G5才能调用helper方法。调用静态方法作为实例方法是一种非常非常糟糕的做法。