3

私は実行しようとしています:

import java.applet.Applet;
import java.awt.*;
import java.net.URL;

public class img extends Applet
{
    private Image img;
    public void init()
    {
        img = null;
    }
    public void loadImage()
    {
        try
        {
            img = getImage(getCodeBase(), "winter.jpg");
            System.out.println(img);
            System.out.println(prepareImage(img, 300, 400, this));
        }
        catch(Exception e){}

        System.out.println(getDocumentBase());
    }
    public void paint(Graphics g)
    {
        if (img == null)
            loadImage();
        g.drawImage(img, 0, 0, this);
    }
}

しかし、ファイル:/C:/Users/Admin/AppData/Local/Temp/ にない限り、winter.jpg は見つかりません。

System.out.println(getDocumentBase()); 戻り値: file:/C:/Users/Admin/AppData/Local/Temp/AppletPage1228891259548967526.html 代わりに: C:/Users/Admin/Dropbox/dev/idea/Exam3/out/production/Exam3/ (.classファイルが配置されています)

IntelliJ IDEA 12 を使用しています。

Temp フォルダーではなく、Exam3 フォルダーに JPEG を入れたいだけです。何か案は?

4

1 に答える 1

1

getDocumentBase() を使用してリソースをロードするための回避策として、クラスに関連するリソースを取得するクラスの getResource を使用して URL を取得できます。

URL base = img.class.getResource("/data/winter.jpg");
Image img = ImageIO.read(base);

data は、このクラス ファイルを含むケースの Exam3 フォルダー内のフォルダーです。

于 2014-10-20T22:38:57.307 に答える