2014-08-30 41 views
1

我有很大的麻烦,加载一个简单的.gif注意像下面的代码使用图片图标上可以加载一个.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 

尝试,但它只能工作巴纽。另外,如果我尝试使用字符串内部的数字,例如“hello01.gif/.png”--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 
+2

*“这就像编译器看不到图像”*编译器从不查找图像。这是必须产生信息的运行时间。 – 2014-08-30 02:03:15

+1

什么是图像文件的实际名称?我不知道你是否需要为你的字符串做一些填充。 – 2014-08-30 02:03:43

+1

1)顺便说一下:在部署时,这些可能会变成一个[tag:embedded-resource],它必须由'URL'而不是'File'来访问。 2)请参阅[什么是堆栈跟踪,以及如何使用它来调试我的应用程序错误?](http://stackoverflow.com/q/3988788/418556)&[什么是NullPointerException,以及如何解决它?](http://stackoverflow.com/q/218384/418556) – 2014-08-30 02:06:40

回答

0

尝试使用this链接。

它似乎有图像图标的GIF的几个很好的答案。

希望这有助于

编辑: 你确定你的形象是在正确的道路? 或路径是正确的,它看起来好像是这个问题

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

是您的形象在你的类路径或其他目录下,如果在你的罐子,然后确保你使用的完整路径,如com\\myprogram\\image01.gif

0

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

0

它看起来像Java不喜欢.gif扩展名的,它不是文件的类型,但只是延伸。我测试使用.png文件,并正常工作。我只是复制并重命名相同的文件,将相同的目录从.gif复制到.png并运行应用程序...您怎么看,它的工作原理!