チェックボックス付きの非常に単純なfxmlファイルがあります。
...
<AnchorPane id="AnchorPane" xmlns:fx="http://javafx.com/fxml" fx:controller="jfx01.T01">
...
<CheckBox fx:id="checkBox1" text="CheckBox" />
...
非常に単純なコントローラ クラスは次のとおりです。
public class T01 extends Application {
@FXML protected CheckBox checkBox1;
@Override
public void start(Stage primaryStage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("t01.fxml"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
//here, here is the problem!
System.out.println("checkBox1==null? "+ (checkBox1==null?"yes":"no"));
}
}
この基本的なアプリの出力は次のとおりです。
checkBox1==null? yes
「start」メソッド内でコンポーネントが作成されることは明らかですが、コントローラ クラスの @FXML フィールドにはまだ割り当てられていません。他のエラーがないことをテストするために、ボタンとイベントを追加しました。そこにcheckBox1 ISが割り当てられています!
@FXML protected void handleButton1Action(ActionEvent event) {
System.out.println("button pressed");
checkBox1.setSelected(!checkBox1.isSelected());
}
質問
初期化がまだ完了していないために開始メソッドを使用できない場合、初期化が完了してコンポーネントが使用可能になる最初の方法は何ですか?