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);
    }
}

但它找不到winter.jpg,除非它位于:file:/C:/Users/Admin/AppData/Local/Temp/

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。

我只是想将我的 JPEG 文件放在 Exam3 文件夹中,而不是 Temp 文件夹中。有任何想法吗?

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 回答