2014-01-28 65 views
0

我目前使用下面的代碼段來獲取接口的圖像。資源圖片沒有包含在構建的jar中

ImageIcon img = new ImageIcon("./lib/logo.gif"); 

JLabel lblNewLabel = new JLabel(""); 
lblNewLabel.setIcon(img); 
lblNewLabel.setBounds(28, 65, 140, 100); 

然而,當我執行清理並生成,當我執行的JAR文件的圖像不會出現。什麼似乎是問題,我應該在哪裏放置圖像文件?提前致謝。

回答

1

「但是,當我執行清理和構建時,圖像不會出現,當我執行jar文件。什麼似乎是問題,我應該在哪裏放置圖像文件?

這就是您從不要加載文件的原因。你想從你的課程路徑加載一個embedded resources的URL

在開發過程中,你的圖像應該放在src的某個地方。當你創建,使用IDE複製圖像您到類路徑,並將其添加到罐子

enter image description here

然後從你的代碼的類路徑加載。

Class.getResource(..)回報URL,所以要做到這一點

ImageIcon icon = new ImageIcon(MyClass.class.getResource("/images/logo.gif")); 
+0

不好意思問這樣的問題,但到底是什麼MYCLASS和階級立場?以便我可以適應它 – user3209957

+0

您的類具有ImageIcon的代碼。 '.class'只表示'Class'對象'MyClass',其中'MyClass'是代碼所在的類'ImageIcon icon = new ImageIcon(..)' –

+0

無論您的類名是什麼,只需將'MyClass'用它 –

1

在您提供的代碼片段中,映像文件的路徑被認爲是在文件系統上(類ImageIcon的構造函數將文件名作爲參數)。如果你想從jar本身加載文件(或圖像),你需要使用ClassLoader.getResourceAsStream()。檢查this的問題。

相關問題