4.1.6Initializableによる初期化処理
では、リスト4.4のWindowControllerでどのようなことが行われているのか、その詳細について説明していきましょう。ポイントは2つあります。1つはコントローラーの初期化処理、もう1つは描画処理です。
ここでは、画面に表示をしたときに描画の処理が自動的に実行され、グラフィックが表示されるようにしておかなければいけません。そのために必要となるのが「初期化処理」です。これは、コンストラクタなどに記述しておけばいい、ということにはなりません。なぜなら、コンストラクタが呼ばれる段階では、まだ@FXMLのフィールド(リスト4.4でいえば、canvasフィールド)などにオブジェクトが設定されていないからです。
コントローラークラスでは、FXMLに用意されたコントロールのオブジェクトを@FXMLアノテーションでフィールドに関連付けることができます。が、これはnewした段階で既に設定されているわけではありません(つまり、コンストラクタが呼び出される段階では、まだフィールドはnullのままです)。インスタンス作成後、JavaFXのシステムによってアノテーションを元にバインド処理が行われ、利用できるようになるのです。従って、コントロールの初期化処理などは、こうしたコントローラーのための処理が完了した後で行わなければいけません。
それを行うために用意されたのが「Initializable」インターフェイスです。
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録