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

时间:2014-08-30 02:00:37

标签: 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;
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();
    }
}

我试过

imagenes[ cuenta ] = new ImageIcon( getClass().getResource("deitel0.gif" ) ); // nothing
imagenes[ cuenta ] = new ImageIcon( getClass().getResource("deitel.gif" ) ); // nothing

但它只适用于.png。此外,如果我尝试在字符串中使用数字,例如&#34; hello01.gif / .png&#34; --ERROR

错误是;

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格式的图像以及文件名中的数字。

图片的名称是

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

3 个答案:

答案 0 :(得分:0)

尝试使用this链接。

看起来在带图像图标的gif上有一些很好的答案。

希望这有帮助

编辑: 你确定你的图像在正确的路径上吗? 或路径是正确的,看起来好像这是问题

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

您的图片是在您的类路径中还是在另一个目录中,如果它在您的jar中,请确保使用完整路径,例如com\\myprogram\\image01.gif

答案 1 :(得分:0)

在我看来,它看起来很清楚,找不到请求的图像(文件)。 检查所有文件是否真的存在 同时检查文件名的区分大小写 也许有像deitel22 .GIF

这样的东西

答案 2 :(得分:0)

看起来Java不喜欢.gif扩展名,它不是文件类型而只是扩展名。我测试使用.png文件,工作正常。我只是复制并重命名相同的文件,从.gif到.png的同一目录并运行应用程序......你怎么看,它有效!