我试图跑:
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());收益: 文件:/ 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文件夹中。有什么想法吗?
答案 0 :(得分:1)
使用getDocumentBase()加载资源的解决方法您可以使用类的getResource获取URL,该类获取相对于类的资源。
URL base = img.class.getResource("/data/winter.jpg");
Image img = ImageIO.read(base);
其中data是您案例中Exam3文件夹中包含此类文件的文件夹。