3 回答

TA貢獻1836條經驗 獲得超4個贊
要從JAR資源加載圖像,請使用以下代碼:
Toolkit tk = Toolkit.getDefaultToolkit();
URL url = getClass().getResource("path/to/img.png");
Image img = tk.createImage(url);
tk.prepareImage(img, -1, -1, null);

TA貢獻1880條經驗 獲得超4個贊
我發現您的代碼有兩個問題:
getClass().getResourceAsStream(imgLocation);
這假定圖像文件與該代碼所屬類的.class文件位于同一文件夾中,而不位于單獨的資源文件夾中。嘗試以下方法:
getClass().getClassLoader().getResourceAsStream("resources/"+imgLocation);
另一個問題:
byte abyte0[] = new byte[imageStream.available()];
該方法InputStream.available()也不會返回流中的字節總數!它返回沒有阻塞的可用字節數,通常要少得多。
您必須編寫循環以將字節復制到臨時文件,ByteArrayOutputStream直到到達流的末尾?;蛘?,使用getResource()和使用createImage()帶有URL參數的方法。

TA貢獻1777條經驗 獲得超3個贊
例如,在NetBeans項目中,在src文件夾中創建一個resources文件夾。將您的圖像(jpg,...)放在那里。
無論您使用ImageIO還是Toolkit(包括getResource),都必須在映像文件的路徑中包含前導/:
Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/agfa_icon.jpg"));
setIconImage(image);
如果此代碼位于JFrame類內,則圖像將作為標題欄中的圖標添加到框架中。
添加回答
舉報