我有一个名为sagum的类,它有一个方法名称paint
public void paint(Graphics g) {
int[] apw1 = null;
int n1 = 0;
for (int j = 1; j <= n1; j++) {
g.drawRect(50, 50, (apw1[j] * 20), 30);
String[] p = null;
g.drawString("p" + p[j - 1], (55 + (apw1[j - 1] * 20)), 70);
g.drawString("" + apw1[j - 1], 50 + (apw1[j - 1] * 20), 100);
}
g.drawString("" + apw1[n1], 50 + (apw1[n1] * 20), 100);
}
我试图称之为
n1=count+1;
paint(g);
我即将收到错误
non-static method paint(Graphics) cannot be referenced from a static context
我只是在执行一个方法后尝试调用它来执行我的方法(调度算法)的图形应用程序。
请帮助
答案 0 :(得分:1)
您不应该直接调用paint(...)
方法,因此您的错误虽然很重要(请参阅this link),但却不是问题。您需要重新构建程序,以便不觉得有必要进行此调用。大多数Swing和AWT应用程序通过更改类属性然后在呈现的组件上调用repaint()
来执行“被动”绘制时效果最佳,以便建议JVM重新绘制它。
答案 1 :(得分:0)
此编译器错误意味着您尝试调用实例方法,但尚未指定实例。
您需要sagum
类的实例,并在其上调用paint()
方法,如下所示:
sagum s = new sagum();
...
s.paint(g);
...
如果从同一实例中的另一个实例方法调用实例方法,则可以显式使用this
来指示实例,或者可以完全不将它保留,并隐含this
。< / p>
但是,在这种特定情况下,others have indicated,不应该直接绘画。编写程序,以便Swing(或AWT或JavaFX)管理绘画计划。