マイApplication
クラスは次のようになりますのJavaFX FXMLコントローラ - initializeメソッドVSコンストラクタ
public class Test extends Application {
private static Logger logger = LogManager.getRootLogger();
@Override
public void start(Stage primaryStage) throws Exception {
String resourcePath = "/resources/fxml/MainView.fxml";
URL location = getClass().getResource(resourcePath);
FXMLLoader fxmlLoader = new FXMLLoader(location);
Scene scene = new Scene(fxmlLoader.load(), 500, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
FXMLLoader
が最初デフォルトのコンストラクタを呼び出すことにより(fx:controller
介しFXML
ファイルに与えられた)は、対応するコントローラのインスタンスを作成し次いでinitialize
方法
public class MainViewController {
public MainViewController() {
System.out.println("first");
}
@FXML
public void initialize() {
System.out.println("second");
}
}
出力は次のとおり
first
second
なぜ、initialize
メソッドが存在するのですか?コントローラを初期化するためにコンストラクタまたはinitialize
メソッドを使用することの違いは何ですか?
お寄せいただきありがとうございます!
わかりません。彼のやり方は 'FXMLLoader'ですよね?だから私は 'initialize()'メソッドを待つことに利点はないと思う。 FXMLが読み込まれると、次のコードは '@ FXML'変数にアクセスできます。確かに、彼はコンストラクターではなく開始メソッドでそれを行いますが、初期化()して自分のケースで何らかの利益をもたらすでしょうか? – codepleb