-1

メソッド名ペイントを持つsagumという名前のクラスがあります

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

メソッドが実行された後に呼び出して、メソッドのグラフィカルアプリ(スケジューリングアルゴリズム)を実行しようとしています。

助けてください

4

2 に答える 2

1

メソッドを直接呼び出すべきではないpaint(...)ため、エラーは理解することが重要ですが (このリンクを参照してください)、問題ではありません。この呼び出しを行う必要がないように、プログラムを再構築する必要があります。ほとんどの Swing および AWT アプリケーションは、クラス プロパティを変更し、レンダリングされたコンポーネントを呼び出すことで「パッシブ」描画を実行repaint()して、JVM が再描画を提案するようにすることで最適に機能します。

于 2013-09-17T16:52:23.693 に答える
0

このコンパイラ エラーは、インスタンス メソッドを呼び出そうとしていますが、インスタンスを指定していないことを意味します。

クラスのインスタンスが必要で、次のようにメソッドsagumを呼び出します。paint()

sagum s = new sagum();
...
s.paint(g);
...

同じインスタンス内の別のインスタンス メソッドからインスタンス メソッドを呼び出す場合は、明示的に を使用thisしてインスタンスを示すことも、完全に省略してthis暗黙的に指定することもできます。

ただし、他の人が指摘したように、この特定のケースでは、直接ペイントするべきではありません。Swing (または AWT または JavaFX) が描画スケジュールを管理するようにプログラムを作成します。

于 2013-09-17T16:45:11.960 に答える