2017-01-30 47 views
1

從Eclipse運行應用程序時,我的應用程序圖標正常工作,但是一旦我將它作爲可運行jar導出後,它就不會出現。應用程序圖標不在導出的項目之後?

這是我使用來設置圖標的代碼:

try { 
    setIconImage(ImageIO.read(new File("resources/icons/icon.png"))); 
} 
catch (IOException exc) { 
    exc.printStackTrace(); 
} 

的圖標是在稱爲resources/icons源文件夾。

爲什麼圖標不包含在導出中?

現在使用URL而不是使用File方法查找圖標。這很好用!

是否可以更改 - 默認情況下文件的圖標?我想我必須使用資源黑客或類似的東西來改變它。但如果可以通過代碼,我很想學習它!

+0

您是否在您的構建或導出規範中插入了該文件夾? – IQV

+1

應用程序資源在部署時將成爲嵌入式資源,所以現在開始訪問它們是明智的做法。 [tag:embedded-resource]必須通過URL而不是文件訪問。請參閱[信息。頁面爲嵌入式資源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 –

+0

@IQV它不是一個選項,它看起來像在eclipse中導出爲可運行的jar時! –

回答

1

可以使用getResource代替​​,像這樣:

Icon icon = new ImageIcon(getClass().getResource("resources/icons/icon.png")); 

所以你setIconImage應該像這樣:

setIconImage(new ImageIcon(getClass().getResource("resources/icons/icon.png")).getImage()); 

如果你的包內你的圖標退出,你可以這樣做:

Icon icon = new ImageIcon(getClass().getResource("/com/icons/icon.png")); 

所以你的setIconImage應該是這樣的:

setIconImage(new ImageIcon(getClass().getResource("/com/icons/icon.png")).getImage()); 

希望這對我有所幫助。

+1

*如果你的圖標退出你的包,你可以這樣做:。 ''/com/icons/icon.png「'」實際上,它可以只是'「icon.png」',而''「com/icons/icon.png」'*是一個路徑**相對到當前包**(不推薦)和'「/com/icons/icon.png」'是類路徑根目錄(最健壯)的路徑。 –

相關問題