this tutotialは、カスタムコンポーネントを組み込み、コンテナのコントローラからコントローラを使用する方法の例です。JavaFXネストされたコントローラ(FXML <include>)
main_window_content.fxml
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog" source="dialog.fxml"/>
...
</VBox>
MainController.java
public class MainController extends Controller {
@FXML private Window dialog;
@FXML private DialogController dialogController;
..
コンポーネントは一度だけ含まれている場合は、それが正常に動作します。 同じコンポーネントが2回含まれている場合、コントローラは初期化されません。 両方のコントローラがnullです。
main_window_content.fxml
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog1" source="dialog.fxml"/>
<fx:include fx:id="dialog2" source="dialog.fxml"/>
...
</VBox>
MainController.java
public class MainController extends Controller {
@FXML private Window dialog1;
@FXML private DialogController dialogController1;
@FXML private Window dialog2;
@FXML private DialogController dialogController2;
は、誰かが問題を解決するために私を助けてもらえますか? ありがとう
これは私のFXMLローディングコードです。これは、メインアプリケーションの方法で実行されています(OTN)からダニエルへ
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("main_window_content.fxml"));
stage.setTitle("FXML Welcome");
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
2番目の答えはこの質問の正しい解決策です。 "Accepted"とマークする必要があります –
@AmirAradどちらが「2番目」ですか? – glglgl