Java 使用图像图标加载.gif文件

Java 使用图像图标加载.gif文件,java,swing,nullpointerexception,jpanel,imageicon,Java,Swing,Nullpointerexception,Jpanel,Imageicon,我很难用下面的代码加载一个简单的.gif图像 package etc_ejmp; /* * Fig 21.2 AnimadorLogoJPanel.java * Animacion de una serie de imagenes*/ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Graphics; i

我很难用下面的代码加载一个简单的.gif图像

   package etc_ejmp;
/*
 * Fig 21.2 AnimadorLogoJPanel.java
 * Animacion de una serie de imagenes*/
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Graphics;
import javax.swing.ImageIcon; 
import javax.swing.JPanel;
import javax.swing.Timer;

public class FIG21_2_AnimadorLogoJPanel extends JPanel{
    private final static String NOMBRE_IMAGEN ="deitel";// nombre de la imagen
    protected ImageIcon imagenes[];// arreglo de imagenes
    private final int TOTAL_IMAGENES=30;// numero de imagenes
    private int imagenActual =0;// indice de la imagen actual
    private final int RETRASO_ANIMACION=50;// retraso en milisegundos
    private int anchura;
    private int altura;

    private Timer temporizadosAnimacion;

    public FIG21_2_AnimadorLogoJPanel(){
        imagenes = new ImageIcon[TOTAL_IMAGENES];

        // carga 30 imagenes
        for(int cuenta=0;cuenta<imagenes.length; cuenta++){
            imagenes[ cuenta ] = new ImageIcon( getClass().getResource(
                      NOMBRE_IMAGEN + cuenta + ".gif" ) );
        }   


        anchura=imagenes[0].getIconWidth();
        altura=imagenes[0].getIconHeight();
    }
}
但它只适用于.png。如果我试图在字符串中使用数字,例如“hello01.gif/.png”--错误

误差为

Exception in thread "main" java.lang.NullPointerException   at
 javax.swing.ImageIcon.<init>(Unknown Source)   at
 etc_ejmp.FIG21_2_AnimadorLogoJPanel.<init>(FIG21_2_AnimadorLogoJPanel.java:29) at
 com.ejercDietel.llamada.llamada_cap21_ejemplos.FIG21_2_AnimadorLogoJPanel(llamada_cap21_ejemplos.java:13) at 
 com.ejercDietel.llamada.EXECAP21.<init>(EXECAP21.java:9)   at
 llamadas.CallCap21(llamadas.java:222)  at
 InicioSistemaPruebas.main(InicioSistemaPruebas.java:67)
尝试使用链接

它似乎有一些很好的答案的gif的图像图标

希望这有帮助

编辑: 您确定图像的路径正确吗? 或者路径是正确的,看起来这就是问题所在

for(int cuenta=0;cuenta<imagenes.length; cuenta++){
        imagenes[ cuenta ] = new ImageIcon( getClass().getResource(
                  NOMBRE_IMAGEN + cuenta + ".gif" ) );
    }

for(int-cuenta=0;cuenta在我看来,显然找不到请求的图像(文件)。
检查所有文件是否确实存在。
同时检查文件名的区分大小写。

可能有一些东西像deitel22.GIF看起来Java不喜欢.GIF扩展名,它不是文件的类型,只是扩展名。我使用.png文件进行了测试,效果很好。我只是将相同的文件、相同的目录从.GIF复制并重命名为.png,然后运行应用程序……你觉得怎么样,它成功了

“就像编译器没有看到图像一样”编译器从不查找图像。必须是运行时生成消息。图像文件的实际名称是什么?我想知道您是否需要对字符串进行0填充。1)BTW:到部署的时候,这些代码很可能成为一个必须通过代码> URL<代码>访问的代码,而不是<代码>文件>代码> 2)请参见& @ DouLasLekAM:请看看如何,尽管这个链接已经被提供了,在之前,我希望它有帮助。如果你还没有解决这个问题,考虑张贴一个我们可以合作。py paste compile运行来演示问题。路径似乎是正确的(即/image.png,假设您的图像位于src/image.png中),因此问题可能在其他地方。
deitel0.gif
deitel1.gif
deitel10.gif
deitel11.gif
deitel12.gif
deitel13.gif
deitel14.gif
deitel15.gif
deitel16.gif
deitel17.gif
deitel18.gif
deitel19.gif
deitel2.gif
deitel20.gif
deitel21.gif
deitel22.gif
deitel23.gif
deitel24.gif
deitel25.gif
deitel26.gif
deitel27.gif
deitel28.gif
deitel29.gif
deitel3.gif
deitel4.gif
deitel5.gif
deitel6.gif
deitel7.gif
deitel8.gif
deitel9.gif
for(int cuenta=0;cuenta<imagenes.length; cuenta++){
        imagenes[ cuenta ] = new ImageIcon( getClass().getResource(
                  NOMBRE_IMAGEN + cuenta + ".gif" ) );
    }