因此,我导入了用作背景的图像,并且由于某种原因,它给了我:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
有人可以帮我吗?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class PixelLegendsMain extends JFrame implements ActionListener{
public void actionPerformed(ActionEvent e){
}
public static void main(String[ ] args)throws Exception{
PixelLegendsMain plMain = new PixelLegendsMain();
arenaBuild arena = new arenaBuild();
plMain.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
plMain.add(arena);
plMain.setSize(600,460);;
plMain.setVisible(true);
plMain.setResizable(false);
plMain.setLocation(200, 200);
}
}
这是主要的类,这是:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Font;
import java.awt.Graphics;
import java.net.URL;
import java.io.*;
import javax.swing.Timer;
public class arenaBuild extends JPanel{
String picPath = "pictures/";
String[] fileName = {picPath+"stageBridge.png", picPath+"turret.png"};
ClassLoader cl = arenaBuild.class.getClassLoader();
URL imgURL[] = new URL[2];
Toolkit tk = Toolkit.getDefaultToolkit();
Image imgBG;
public arenaBuild()throws Exception{
for (int x=0;x<2;x++){
imgURL[x]= cl.getResource(picPath+fileName[x]);
}
imgBG = tk.createImage(imgURL[0]);
}
public void paintComponent(Graphics g){
g.drawImage(imgBG,0,0,600,460,0,0,600,460, this);
}
}
Thjis是我在其中调用图像的地方。我是新来的,因此,如果有人可以解释为什么会发生这种情况并帮助我修复它,我将不胜感激:D
最佳答案
最可能的解释是您的tk.createImage(imgURL[0])
呼叫正在传递null
URL。
怎么会这样好吧,ClassLoader.getResource(String)
方法是specified,如果找不到资源则返回null
……所以似乎问题在于您为第一个资源使用了错误的路径。
您正在使用的路径似乎是这样的:"pictures/pictures/stageBridge.png"
:
您似乎不太可能真的将图像放在名为"pictures/pictures"
的目录中。
由于您是在ClassLoader
对象(而不是Class
对象)上调用方法,因此您使用的概念上相对路径将被视为绝对路径;即您将获得“ / pictures / ...”而不是“ / PixelLegendsMain / pictures / ...”