JAVA學習筆記 -- 把資源文件打包到jar包

初學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