0

この例を実行しようとしています http://zetcode.com/tutorials/javagamestutorial/movingsprites/ しかし、これらのエラーが発生します

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at rtype.Craft.<init>(Craft.java:19)
at rtype.board.<init>(board.java:28)
at rtype.Rtype.<init>(Rtype.java:9)
at rtype.Rtype.main(Rtype.java:20)

プロジェクトファイル内のさまざまな場所にイメージを配置し、絶対パスを書き込んでみました。

私は何を間違っていますか?エクリプスを使っています。

編集:すみません、ここにコードがあります

private String craft = "craft.png";

private int dx;
private int dy;
private int x;
private int y;
private Image image;

public Craft() {
    ImageIcon ii = new ImageIcon(this.getClass().getResource("C:\\Users\\Name\\workspace\\Craft\\src\\resource\\craft.png"));
    image = ii.getImage();
    x = 40;
    y = 60;
}

上記のこれは私の現在の試みですが、例は次のことを示唆しています:

ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));
4

2 に答える 2

2

this.getClass().getResourcejar ファイルからコードを実行し、jar 内にもあるリソースをロードする必要がある場合に主に使用されます。

あなたの場合、おそらく次のようにロードする必要があります

ImageIcon ii = new ImageIcon("C:/Users/Name/workspace/Craft/src/resource/craft.png");
image = ii.getImage();

または多分

ImageIcon ii = new ImageIcon("craft.png");
image = ii.getImage();

画像がプロジェクト内にある場合。

于 2013-03-29T20:24:58.323 に答える
2

例外はImageIconコンストラクターからスローされます。このコンストラクタImageIconで初期化されるようにサンプルから見えます:URL

String craft = "craft.png";
...
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));

その理由は、ワークスペースに「craft.png」というファイルが見つからないことが原因である可能性があります。ローダーが指定されたファイルを見つけることができ、this.getClass().getResource(craft)null でないことを確認してください。

イメージやその他のリソースを追加およびロードする方法の詳細と例については、 getResourceチュートリアルを使用したイメージのロードを参照してください。

于 2013-03-29T20:16:04.507 に答える