2010-04-17 21 views
0

我正在用swing gui製作java遊戲的學校魚雷遊戲,請參閱壓縮源HEREJava搖擺應用程序找不到圖像

我使用存儲在/ bin/resource/graphics/default文件夾的子文件夾中的圖像的自定義按鈕圖標和鼠標光標,其中根文件夾是程序的根文件夾(它也將是最終.jar中的根目錄)我想)除了「bin」之外,還包含一個包含所有類的「main」文件夾。資源的相對路徑存儲在MapStruct.java的shipPath和mapPath變量中。 現在Battlefield.java的PutPanel類找到了它們並且設置了它的按鈕的圖標,但是其他每個類都沒有得到它們的圖標,例如Table.java的setCursor,它應該爲所選船舶圖像的所有元素或Field.java的this.button.setIcon(icon)設置鼠標光標;在構造函數中,它應該設置「水」按鈕的圖標。

我看着調試發生了什麼,加載後圖像保持爲空,儘管路徑似乎是正確的。我也試圖在圖像文件夾中編寫測試文件,但該方法返回一個filenotfound異常。我試圖找到班級的路徑,看它是否從預期的地方運行,看起來確實如此,所以我現在真的找不到問題了。

任何人都可以幫我嗎? 謝謝。

+0

在http://java.sun.com/docs/看看books/tutorial/uiswing/components/icon.html給你一個構思你的文件系統和使用getResource()的其他方法的想法。另外,在提交作業之前,你應該真的評論你的代碼。 – 2010-04-17 13:46:51

回答

2

您需要加載圖標是這樣的:

ClassLoader cl= this.getClass().getClassLoader(); 
URL imageURL = cl.getResource("resources/..."); 
ImageIcon icon = new ImageIcon(imageURL); 

而你需要你的資源文件夾添加到Eclipse中的類路徑。請注意,路徑不是文件路徑,如果您決定將您的應用程序捆綁到jar文件中,這種方式將起作用。

+0

謝謝,並且對缺少評論感到抱歉 – 2010-04-17 17:47:55

+0

看起來資源只能放在包裝結構中。所以,如果我在Eclipse中的Test.java文件旁邊放置images \ a.png,它就可以工作。 – Teddy 2014-06-16 09:56:47

0
btnRegistration.setIcon(createImageIcon("reg.png")); 

protected ImageIcon createImageIcon(String path) { 
    java.net.URL imgURL = Master.class.getClassLoader().getResource(path); 
    if (imgURL != null) { 
    return new ImageIcon(imgURL); 
    } else { 
    System.out.println("Couldn't find file: " + path); 
    return null; 
    } 
} 

這裏btnRegistration是我的JButton 法師是我的 類和reg.png是我的形象,是屬於我的項目

+0

評論這裏如果你有問題要整合這種方法。 – 2015-12-09 11:54:35