忍者ブログ

≪ 前の記事

次の記事 ≫

  • [PR]

    ×

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

    comments

  • FXML・CSSファイルの読み込み

    JavaFXtitle画像
    Javaのソースコード上からFXMLファイル、CSSファイルを読み込む時のコード記述例。




    拍手[1回]



    FXML
    public 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>
    
    



    CSS

    Javaの場合

    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を囲みます。
    この時、ファイル名の先頭に「@」を付けることが必要です。





    0 comments

Comment