jarファイルからCSS、pngファイルを読み込む
JavaFXのCSSファイルを読み込んだり、アイコンとして使うファイルをJarファイルから読み込むサンプルプログラムです。
画像ファイルの読み方
Eclipseで作業しているときにはエラーなく作業できたのに、Jarファイル化したら読み込めなくなってちょっと苦労しました。
下はEclipseでは動くけど、Jar化するとエラー。
Image icon = new Image( "file:icon.png" );
このように書き直したらうまく通りました。Pngファイルは実行ファイルと一緒にJarファイルに取り込んでいます。
Image icon = new Image(getClass().getResourceAsStream( "icon.png" ));
サンプルプログラム
トップの画像は下のコードを実行したものです。
赤く表示されているのがアイコンで、icon.pngを読み込んだものです。
ボタンの文字が大きかったり枠に色がついていますが、これは読み込んだCSSファイル内で設定しています。
package tomojavalib.swingfx;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class CssIconTestFx 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:icon.png" );
Image icon = new Image(getClass().getResourceAsStream( "icon.png" ));
stage.getIcons().add( icon );
ObservableList<String> stylesheets = scene.getStylesheets();
stylesheets.add(getClass().getResource("test.css").toExternalForm());
Button b = new Button("テスト");
pane.getChildren().add(b);
stage.show();
}
}
最終更新日: 2018-02-21 07:32:41