初學GUI,用Eclipse導出jar包,設定的最小化圖標不能顯示(hello.png文件放在項目的根目錄下)。代碼以下:java
import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Toolkit kit = Toolkit.getDefaultToolkit(); Image image = kit.getImage("hello.png"); frame.setIconImage(image); frame.show(); } }
後來我發現只要把jar包和hello.png在同一目錄下,圖標就能夠正常顯示。這表示jar是一個單獨的文件而非一個文件夾。而上面這代碼表示導出的jar文件和hello.png必需要在相同路徑下。spa
解決方法.net
import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Toolkit kit = Toolkit.getDefaultToolkit(); URL imgURL = GUITest.class.getResource("images/hello.png"); Image image = kit.getImage(imgURL); frame.setIconImage(image); frame.show(); } }
把hello.png的目錄是 "項目名/bin/images/hello.png" 能夠看到images 和class文件是同一目錄的,因此代碼中"images/hello.png"是表示相對路徑。固然也能夠把images文件夾放在項目的根目錄下,只要把路徑改爲"/images/hello.png" 。這樣,導出jar包後,在其餘位置也能夠正常顯示圖標,由於路徑正確了。code