JavaFXのアイコンを差し替える
Javaアプリを立ち上げるとWindowsのタスクバーとStageの左上に
Java
楽天 の「コーヒーアイコン」が表示されます。
これを任意の画像に差し替えるサンプルプログラムを紹介します。
下の画像緑のアイコンがJavaFXアプリケーションを実行した例。
赤はJavaSwingでの例です。
JavaFXのサンプルプログラム
画像を読みこんでStageに貼り付けます。これだけ。
icon.pngは32×32ピクセルの小さなものを使っています。Windowsのタスクバーに表示されるサイズがこの大きさなので、
これより大きくする意味はありません。
Image icon = new Image( "file:/d:/work/icon.png" );
stage.getIcons().add( icon );
単純な実行できるサンプルプログラムは下記の通り。
package tomojavalib.swingfx;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class IconTestFx extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
stage.setTitle("FX");
FlowPane pane = new FlowPane();
Scene scene = new Scene(pane, 320, 240);
stage.setScene(scene);
//アイコンの設定
Image icon = new Image( "file:/d:/work/icon.png" );
stage.getIcons().add( icon );
stage.show();
}
}
JavaSwingのサンプルプログラム
同様にJavaSwingで書くとこんな感じ。
画像ファイルを読み込んで、Jframeにセットします。
URL url=this.getClass().getResource("icon.png");
try {
Image im=this.createImage((ImageProducer) url.getContent());
this.setIconImage( im );
}catch(Exception ex){System.out.println("アイコンファイルがありません");}
単純な実行できるサンプルプログラムに組み込むと、下記の通り。
package tomojavalib.swingfx;
import java.awt.Image;
import java.awt.image.ImageProducer;
import java.net.URL;
import javax.swing.Jframe;
public class IconTestSwing extends Jframe {
/*コンストラクタ*/
public IconTestSwing()
{
//サイズ設定
this.setBounds(500, 500, 320, 240);
//タイトル設定
this.setTitle("SWING");
//アイコンの設定
this.setIcon();
}
private void setIcon()
{
//アイコンの設定
URL url=this.getClass().getResource("icon.png");
try {
Image im=this.createImage((ImageProducer) url.getContent());
this.setIconImage( im );
}catch(Exception ex){System.out.println("アイコンファイルがありません");}
}
public static void main(String[] args) {
IconTestSwing its = new IconTestSwing();
its.setVisible(true);
}
}
Jar化するときの記述
上のコードでは、Jarファイルかしたときにうまく読み込めないことに気付きました。
JavaFX楽天 の場合は、イメージの読み込みを下記のように描き直し、
Image icon = new Image(getClass().getResourceAsStream( "icon2.png" ));
画像ファイルを実行ファイルと同じJarファイルに取り込無ことで正常に読み込むことが出来ました。
最終更新日: 2019-11-13 08:44:13