在javafx中加载多个fxml

在javafx中加载多个fxml,java,javafx,fxml,scene,Java,Javafx,Fxml,Scene,我已经搜索了一段时间,但我一直没有得到我想做的事情。我一直在使用javafx框架在这个线程“”中切换javafx中的fxml,并取得了一些成功。我的意思是,我有一个主窗口,这个窗口有两个不同的区域,主区域和内容区域 在整个应用程序中,主区域将保持不变,但内容区域将不断变化。我的主区域只有一个工具栏,根据您单击工具栏中的哪个按钮,内容区域中的fxml(和行为)将发生变化 我已经有了这样的行为,并且使用这个框架,它就像一个符咒 问题是,我希望我的所有内容领域也有自己的主要领域,也有自己的内容领域。根

我已经搜索了一段时间,但我一直没有得到我想做的事情。我一直在使用javafx框架在这个线程“”中切换javafx中的fxml,并取得了一些成功。我的意思是,我有一个主窗口,这个窗口有两个不同的区域,主区域和内容区域

在整个应用程序中,主区域将保持不变,但内容区域将不断变化。我的主区域只有一个工具栏,根据您单击工具栏中的哪个按钮,内容区域中的fxml(和行为)将发生变化

我已经有了这样的行为,并且使用这个框架,它就像一个符咒

问题是,我希望我的所有内容领域也有自己的主要领域,也有自己的内容领域。根据您在第二个主要区域中所做的工作,fxml和第二个内容区域中的行为也会发生变化

我不知道我正在使用的框架是否足够,以及我是否能够使用它实现我想要做的事情

您知道另一个不同的框架可以帮助我获得该功能吗


提前多谢

您加载的每个
.fxml
都可以有自己的控制器。每个控制器都可以像主控制器一样具有自定义操作和加载代码

基本上,JavaFX是模块化的。如果在你的主窗格中有一些东西是可能的,那么在它的所有子窗格中也是可能的

通常,在基于UI的框架中,明智的做法是保留一个反映其各自组件层次结构的控制器层次结构。如果要获取子元素的子控制器(例如,为了将引用传递给父控制器),则不能依赖
FXML.load()
快捷方式,必须使用以下较长语法:

FXMLLoader loader = new FXMLLoader(getClass().getResource("your.fxml"));
YourPaneType pane = loader.load();
YourControllerType controller = loader.getController();

不太清楚你在问什么。您是否尝试过在这种情况下使用已经适用的方法?如果是这样,它能工作吗?如果不能,具体出了什么问题?它不能工作,因为框架的所有属性和方法都是静态的。它必须从JavaFX应用程序类初始化,当您交换fxml并“导入”一个新的子fxml时,它本身不是JavaFX应用程序,因此您不能从那里初始化一个新的框架实例。您不能使用原始框架实例,因为您会覆盖它上面的值。我会尽快修改我的问题以澄清它。