tips/JAVA/JAR ファイル内に画像ファイルなどを含める の変更点


#navi(../)

* JAR ファイル内に画像ファイルなどを含める [#v448a206]


画像ファイルを JAVA プログラム内で使用する場合、
とりあえず使うにはイメージ関連のクラス
(Swing なら ImageIcon)のコンストラクタに
ファイル名を渡せばよいですが、
この方法だと JAR ファイル化した時に画像ファイルを JAR ファイルに含められません。
(ファイル名指定だとファイルそのものを取得しようとするため)。

この場合、クラスローダーというクラスの getResource というメソッドを使用すれば
画像などのファイルを URL もしくは InputStream の形で取得できます。
クラスローダーは java の実行時に必要なクラスを
クラスパスの JAR ファイルからロードするクラスです。
そして getResource メソッドを使用すれば、
クラスファイルを取得するのと同じように JAR ファイルの中の画像を取得できます。

Swing の場合

#code(JAVA){{
#pre{{
ClassLoader classLoader = this.getClass().getClassLoader();
URL resUrl = loader.getResource("xxx.gif");
ImageIcon image = new ImageIcon(resUrl);
}}

SWT の場合

#geshi(JAVA){{
#pre{{
Image image;
ClassLoader classLoader = this.getClass().getClassLoader();
InputStream iStream = classLoader.getResourceAsStream("xxx.gif");
if(iStream != null){
    image = new Image(Display.getDefault(), iStream);
}
}}