JavaFX Nested Controllers (FXML <包括>)
2022-09-01 13:07:27
在本教程中,有一个示例说明如何包含自定义组件以及如何从容器的控制器使用其控制器。
main_window_content.fxml
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog" source="dialog.fxml"/>
...
</VBox>
主控制器.java
public class MainController extends Controller {
@FXML private Window dialog;
@FXML private DialogController dialogController;
..
如果该组件仅包含一次,则它工作正常。如果同一组件包含两次,则不会初始化控制器。两个控制器都为空。
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>
主控制器.java
public class MainController extends Controller {
@FXML private Window dialog1;
@FXML private DialogController dialogController1;
@FXML private Window dialog2;
@FXML private DialogController dialogController2;
有人可以帮我解决问题吗?谢谢
这是我的FXML加载代码。它在主应用程序方法中执行:
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();
}