2012-01-24 59 views
2

沒有運氣,通過我在谷歌上找到的工作。來自罐子的Java小程序

+0

1)確保將Jar條目設置爲「不壓縮」,如果它只包含圖像。 Zip(用於Jar)壓縮對圖像幾乎沒有影響。 2)我建議將這些類放入使用標準壓縮的獨立Jar中。它們將被壓縮得更小,JRE只需要連接到服務器就可以完成全部任務。你爲什麼不*要將applet放入Jar中? –

回答

3

可以加載使用任何資源上可用的類路徑,你的罐子將成爲其中的一部分,使用ClassLoader.getResource(String)

您可以獲取到相關ClassLoader對象的引用Class.getClassLoader()

ClassLoader cl = MyClass.class.getClassLoader(); 

如果您的圖像被命名爲myimage.png,並且位於jar內的目錄images中,則可以像這樣獲取圖像。

URL url = cl.getResource("images/myimage.png"); 

然後,您可以使用URL在內存中創建圖像對象。

Image i = Toolkit.getDefaultToolkit().createImage(url); 
+0

最好鏈接到最新版本的JavaDocs。我編輯了您的答案以指向J2SE 7.有關獲取最新文檔鏈接的提示,請參見[優點2](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) 。 +1的答案。 –

+0

謝謝。美麗。順便說一下,有什麼類似的方式來做到這一點與音頻文件?工具包似乎沒有涵蓋它。 – user1012037

+0

我建議看看這個問題http://stackoverflow.com/questions/26305/how-can-i-play-sound-in-java。值得注意的是,如果你想使用的方法不接受一個URL對象,但會採用'InputStream'。您可以通過調用其上的'openStream()'方法來使用URL對象來獲取原始的'InputStream'。然後你可以將這個字節流傳遞給你需要的任何東西。 – Dev

3

在Java網站上的教程How to Use Icons可能對您有用。

你會做這樣的事情:

java.net.URL imgURL = this.getClass().getResource(path); 

getResource()方法使用相同的加載規則由ClassLoader的類定義。