0

私はJavaを初めて使用し、まだ学習中ですが、JFrame内に画像を表示したいと考えています。どこでも答えを探しましたが、まだ有用なものは見つかりませんでした。X 座標と Y 座標、およびキーが押されているかどうかを追跡する文字クラスがあります。キャラクターのクラスのコードが役立つ場合は、次のとおりです。

import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;

public class Char {

    private String Char = "Char.png";
    private int dx;
    private int dy;
    private int x;
    private int y;
    private Image image;

    public Char() {
        ImageIcon ii = new ImageIcon(this.getClass().getResource(Char));
        image = ii.getImage();
        x = 40;
        y = 60;
    }

    public void move() {
        x += dx;
        y += dy;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public Image getImage() {
        return image;
    }

    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_LEFT) {
            dx = -1;
            System.out.println("Left arrow key down.");
        }
        if (key == KeyEvent.VK_RIGHT) {
            dx = 1;
            System.out.println("Right arrow key down.");
        }
        if (key == KeyEvent.VK_UP) {
            dy = -1;
            System.out.println("Up arrow key down.");
        }
        if (key == KeyEvent.VK_DOWN) {
            dy = 1;
            System.out.println("Down arrow key down.");
        }
    }

    public void keyReleased(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_LEFT) {
            dx = 0;
            System.out.println("Left arrow key up.");
        }
        if (key == KeyEvent.VK_RIGHT) {
            dx = 0;
            System.out.println("Right arrow key up.");
        }
        if (key == KeyEvent.VK_UP) {
            dy = 0;
            System.out.println("Up arrow key up.");
        }
        if (key == KeyEvent.VK_DOWN) {
            dy = 0;
            System.out.println("Down arrow key up.");
        }
    }
}

Board クラスは、Char クラス内で getImage メソッドを使用して画像を描画することになっていますが、次のコード行でエラーが発生するようです。

    ImageIcon ii = new ImageIcon(this.getClass().getResource(Char));
    image = ii.getImage();
4

3 に答える 3

0

これを行うことができます:

//If the image is inside de classpath
ImageIcon ii = new ImageIcon(this.getClass().getResource("/path/to/image"));

//If the image outside de classpath
ImageIcon ii = new ImageIcon("/path/to/image"); //i.e. C:\\images\\x.png
于 2012-08-07T19:51:44.080 に答える
0

Replace this.getClass() with thenameofyourclass.class

If your class name is Craft (Zetcode) replace this.getClass() with Craft.class and with Char.png directly next to the .java file. It will work

于 2013-01-01T08:23:41.577 に答える
0

画像がクラスパスのルート位置または Jar のルートパス (パッケージ化されている場合) 内にあることを確認してください。

于 2012-08-07T19:48:45.907 に答える