JavaFX FXML コントローラー: コンストラクターと初期化メソッドの役割の区別
JavaFX では、FXML を利用してユーザー インターフェースを宣言的に構築します。 FXML ファイルの fx:controller 属性で指定されているコントローラー クラスは、GUI 要素の対話ロジックとして機能します。コンストラクターとInitialize() メソッドという 2 つのライフサイクル メソッドは、コントローラーの初期化において重要な役割を果たします。
コンストラクターが最初に呼び出され、続いて @FXML フィールドと対応する Java オブジェクトの注入が行われます。続いて、initialize() メソッドが実行されます。
コンストラクターと Initialize メソッド
コンストラクターとInitialize() メソッドの主な違いは、次のタイミングにあります。その実行と FXML アノテーションへのアクセス。コンストラクターが最初に実行されますが、@FXML アノテーションが付けられたフィールドにはアクセスできません。これらのフィールドは、initialize() メソッド内でのみアクセスできます。
これにより、コンストラクターは FXML コンポーネントの挿入前にタスクを実行できるようになり、initialize() メソッドはこれらの挿入されたコンポーネントにアクセスして操作できます。
実用的使用
コンストラクターは、GUI が完全に完成する前に実行する必要があるタスクに使用する必要があります。データベースからのデータの読み取りなど、ロードされます。一方、initialize() メソッドは、イベント ハンドラーの設定やデフォルト値の変更など、GUI コンポーネントの初期化に適しています。
例
検討次のコード:
public class MainViewController { // Constructor public MainViewController() { System.out.println("first"); } // Initialize method @FXML public void initialize() { initializeComponents(); System.out.println("second"); } private void initializeComponents() { // Initialize GUI components, e.g., add event handlers } }
この例では、コンストラクターは Java オブジェクトが挿入される前に「最初に」出力します。 FXML アノテーション付きフィールドに入力します。次に、initialize() メソッドは、これらのフィールドが挿入された後「秒」を出力します。これは、これらのライフサイクル メソッドの順次実行を示しています。
以上がJavaFX FXML: コンストラクターと `initialize()` メソッド – 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。