2014-08-30 42 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並運行應用程序...您怎麼看,它的工作原理!