web-dev-qa-db-ja.com

JavaFX-FXMLコントローラーの入手方法

私は次のコードを持っています:

Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml"));

fxmlファイルには、コントローラークラスへの参照があります。コントローラーオブジェクトを取得するにはどうすればよいですか?


fxml:

<AnchorPane id="AnchorPane" fx:id="root" 
    prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" 
    xmlns="http://javafx.com/javafx/2.2" 
    fx:controller="br.meuspila.javafx.JanelaPrincipalController">
    ...
10
ceklock

FXMLLoaderをインスタンス化し、クラスの静的ロードメソッドではなくインスタンスロードメソッドを使用します。その後、ローダーインスタンスからコントローラーインスタンスを取得できます。

FXMLLoader loader = new FXMLLoader(
  getClass().getResource(
    "customerDialog.fxml"
  )
);

Pane pane = (Pane) loader.load();

CustomerDialogController controller = 
    loader.<CustomerDialogController>getController();
controller.initData(customer);

詳細については、以下を参照してください。

29
jewelsea