-2

重複の可能性:
非静的メソッドへの静的参照を作成できません

背景を並べて表示しようとしていますが、行き詰まっています。のドキュメントを読みましたcreateImage()が、何らかの理由で何かが静的であり、その方法や理由がわかりません。

ここに私が持っているコードがあります:

Paint paint;

    if (paint == null) {
        try {
            // Create TexturePaint instance the first time
            Component c;

            Image image = c.getToolkit().getImage("Background.png");

            int height = image.getHeight(null);
            int width = image.getWidth(null);

            BufferedImage bi = (BufferedImage) Component.createImage(width, height);
            Graphics2D biG2d = (Graphics2D) bi.getGraphics();

            biG2d.drawImage(image, 0, 0, Color.black, null);

            paint = new TexturePaint(bi, new Rectangle(0, 0, width, height));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

インターネット上で単一の答えを見つけることができなかったので、何が問題なのかわかりません。:(

ご支援ありがとうございました。

4

5 に答える 5

2

createImage は静的メソッドではないため、クラス名を使用してそのメソッドに直接アクセスすることはできません。

createImageComponentはインスタンス メソッドなので、インスタンス化してそのインスタンスから呼び出す必要がありcreateImageます。

例:

Component comp = new Component(..);
comp.createImage(...);
于 2012-12-31T17:48:47.533 に答える
1

この行:

BufferedImage bi = (BufferedImage) Component.createImage(width, height);

間違っています。Component存在しないクラスで静的呼び出しを行っています。Componentコードの上位にインスタンスが宣言されているが初期化されていないため、何を達成しようとしているのかわかりません。これを行った場合:

BufferedImage bi = (BufferedImage) c.createImage(width, height);

コンパイラの警告は表示されなくなりますが、コードを実行すると NPE が発生します。達成しようとしていることをより明確に定義したい場合があります。

于 2012-12-31T17:49:17.657 に答える
0

おそらく、このTexturePaintオブジェクトをから取得しPaintたオブジェクトの属性として設定することになります。同じコンポーネントを使用して作成する必要があります。Graphics2DComponentBufferedImage

于 2012-12-31T18:20:47.173 に答える
0

のインスタンスでメソッドを呼び出す、これを試してくださいComponent:

BufferedImage bi = (BufferedImage) c.createImage(width, height);
于 2012-12-31T17:50:24.727 に答える
0

おそらくこの行の代わりに

BufferedImage bi = (BufferedImage) Component.createImage(width, height);

代わりに、Component オブジェクト c を使用する必要があります。

BufferedImage bi = (BufferedImage) c.createImage(width, height);

ただし、現在のコードで c が null 以外になる方法はわかりません。しかし、おそらくそれは、あなたが自分で対処できる別の問題です。

于 2012-12-31T17:52:01.520 に答える