-
[PR]
2024. 11. 21(木) 18:57
×[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
-
FXML・CSSファイルの読み込み
2017. 05. 14(日) 16:57
Javaのソースコード上からFXMLファイル、CSSファイルを読み込む時のコード記述例。
FXMLpublic class Main extends Application { public void start(Stage primaryStage) { try { FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml")); VBox vbox = loader.load(); Scene scene = new Scene(vbox,400,200); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } }
FXMLファイルを読み込む時はFXMLLoaderクラスのload()メソッドを使います。
FXMLLoaderクラスのインスタンスを生成する際に使っている、引数の「getClass()」はObjectクラスのメソッドで、インスタンスのクラス情報を返してくれます。
今回の場合はthis.getClass()の省略形なので、Mainクラスが返ってくる(のはず)。
因みにControllerを利用する場合は、以下のようにFXMLLoaderでControllerを取得します。
Controllerクラスの設定はFXMLファイル内で行う。
public class Main extends Application { public void start(Stage primaryStage) { try { FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml")); VBox vbox = loader.load(); loader.getController(); Scene scene = new Scene(vbox); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } }
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> ---処理--- </VBox>
CSSJavaの場合
public class Main extends Application { public void start(Stage primaryStage) { VBox vbox = new VBox(); Label label =new Label("ラベル"); vbox.getChildren().add(label); Scene scene = new Scene(vbox); //CSSファイルを読み込む scene.getStylesheets() .add(getClass().getResource("application.css").toExternalForm()); //labelにCSSを適用させる label.getStyleClass().add("label"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
読み込ませたいノード(今回はscene)にgetStyleSheets()メソッドで指定してあげます。
こちらも前述したものと同様にgetClass()を引数に渡し、該当ファイルのURLをtoExternalForm()で文字列に変換します。
そして適用させたいノード(label)にgetStyleClass()で設定してあげたら完了です。
FXMLの場合
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> <stylesheets> <URL value="@button.css"/> </stylesheets> <children> <fx:include source="menubar.fxml"/> </children> </VBox>
FXML内で設定する場合は、<stylesheets></stylesheets>でスタイルシートのファイルURLを囲みます。
この時、ファイル名の先頭に「@」を付けることが必要です。
Comment