2012-01-25 135 views
0

由於某種原因,我無法加載某些圖像與我的Java程序。就在這段代碼之上,我有另一個圖像引用,工作正常。Java問題加載圖像

for(int x = 1; x<=7; x++){ 
     if(additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".GIF"))); 
      count++; 
     } 
    } 

圖像保存一個名爲IMAGES 文件夾中,被稱爲image1.gif,image2.gif等,如果你需要我的代碼的其餘部分只是問

+2

您是否100%確定您正在尋找圖像的正確位置?如果你運行這一行:'System.out.println(System.getProperty(「user.dir」));'返回什麼?您的IMAGES目錄是否在相對於用戶目錄的正確位置(從上面給出的代碼行輸出的路徑字符串)?例如,如果它返回'C:\ Users \ Foo \ Documents \ workspace \ bar',那麼IMAGES應該在:'C:\ Users \ Foo \ Documents \ workspace \ bar \ IMAGES' –

+0

是的,我確信我是看在正確的文件夾,就像我說我有其他的行,參考圖像從相同的文件夾,並使用相同的路徑只是「圖像/文件名」+ aValue +「。gif」不超過代碼上的幾行和eblow它沒有問題 – Nate

+0

您的pastebin代碼與上面發佈的代碼不同。哪個是對的?你是否收到任何錯誤訊息? –

回答

2
  1. 是它的窗口? GIF != gif否則
  2. 它是否工作,如果你刪除條件(additionals[x] != 0)
  3. rightPanel足夠大的所有圖像?
+0

感謝您獲取超級快速我不明白爲什麼這一行不工作我認爲這與我的文件命名有關,如果我將「IMAGES/image」+ x +「.GIF」替換爲另一個保存在相同圖像中的圖像它工作正常的文件夾。即時通訊使用淨豆,如果這與它有什麼關係,但目錄是正確的,因爲我在同一個程序中引用其他圖像保存在該工作正常的文件夾中的其他行的代碼 – Nate

+0

http:// pastebin。com/nRemXPJm – Nate

1

你確定這:

if (additionals[0] != 0){ 
     rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif"))); 
     count++; 
    } 
    for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".gif"))); 
      count++; 
     } 
    } 

應該不是真的是這樣?

if (additionals[0] != 0){ 
     rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif"))); 
     count++; 
    } 
    for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+ additionals[x]+".gif"))); 
      count++; 
     } 
    } 

這會讓你的代碼看起來更對稱。否則,請在違規行之前使用要用於使ImageIcon確保其正確的字符串執行printlns。

例如:

for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      String imagePath = "IMAGES/image"+x+".gif"; 
      System.out.println("imagePath = " + imagePath); 
      rightPanel.add(new JLabel(new ImageIcon(imagePath))); 
      count++; 
     } 
    } 

,然後比較與該文件名和路徑輸出字符串。更好的方法是在嘗試使用它創建一個新的ImageIcon之前創建一個新的File並輸出其完整路徑。

警告:代碼尚未經過測試。

+0

對於第一部分是肯定肯定它不應該是,如果你看我的代碼開始處的註釋在第一部分之後的加法數組,加法[1..7]是一個等價於布爾值的整數只有0或1,你在那裏發佈的代碼只會加載一個圖像,這將是image1所有的時間是如何做的,它是加法[1]等於保修,所以如果加法[1] == 1,然後加載imgae1。 gif加法[5]等於監視器(或任何),所以如果加法[5] == 1然後加載image5.gif – Nate

+0

也爲第二部分我已經試過println的,並據我可以告訴他們只是他們應該如何。我可以將我的目錄上傳到文件共享站點,以便任何人都可以運行它,如果他們願意的話,它可能只是我的機器,因爲沒有機會嘗試另一個。 – Nate

+0

如何在IMAGES目錄中發佈所有文件的列表? –