2

ここにメインクラスがあります

public class Testing extends JFrame{

private static final long serialVersionUID = 1L;

public Testing(){
    setContentPane(new Canvas());
    setVisible(true);
    setLocationRelativeTo(null);

}
public static void main(String[] args0){
    new Testing();
}

}

Canvas クラスの drawImage メソッドでエラーが発生します。画像を入れてソースフォルダーとして使用する res フォルダーを作成しました。

public class Canvas extends JPanel{
Graphics g;
Graphics2D g2 = (Graphics2D)g;
BufferedImage image;
private static final long serialVersionUID = 1L;
public Canvas(){
    setPreferredSize(new Dimension(800,600));
    loadImage("/space.png");
    draw(g2);
}
public void draw(Graphics2D g2){
    g2.drawImage(image, 0,0,this);
}
public void loadImage(String path){
    try {
        image = ImageIO.read(
            getClass().getResourceAsStream(path)
        );
    }
    catch(Exception e) {
        e.printStackTrace();
        System.out.println("image loading error");
    }

}

}

お手伝いありがとう。

プログラムを実行したときに発生したエラー。

Exception in thread "main" java.lang.NullPointerException
at Canvas.draw(Canvas.java:21)
at Canvas.<init>(Canvas.java:18)
at Testing.<init>(Testing.java:11)
at Testing.main(Testing.java:17)
4

3 に答える 3

2

Graphics2D オブジェクト 'g' をどこで初期化したか、適切に初期化する必要があります。

于 2013-08-21T19:22:09.197 に答える
0

グラフィックス2D

protected Graphics2D() 新しい Graphics2D オブジェクトを構築します。

Graphics2D は抽象クラスであり、さまざまな出力デバイス用にサブクラスでカスタマイズする必要があるため、Graphics2D オブジェクトを直接作成することはできません。代わりに、Graphics2D オブジェクトは別の Graphics2D オブジェクトから取得するか、Component で作成するか、BufferedImage オブジェクトなどの画像から取得する必要があります。

使用する:

Graphics2D g2 = (Graphics2D)g;
g2.drawImage();
于 2013-08-21T19:23:15.263 に答える