因此,我导入了用作背景的图像,并且由于某种原因,它给了我:

 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 / ...”

10-08 02:51