java - 在javafx中加载多个fxml

标签 java javafx fxml scene

找了半天也没能得到我想做的。我一直在使用 javafx 框架在这个线程'Loading new fxml in the same scene中切换 javafx 中的 fxml ' 取得了一些成功。我的意思是,我有一个主窗口,这个窗口有两个不同的区域,主要区域和内容区域。

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

我已经有了这种行为,并且使用上述框架它就像一个魅力。

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

我不知道我正在使用的框架是否足够,我是否能够使用它获得我想做的事情。

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

提前致谢!

最佳答案

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

基本上,JavaFX 是模块化的。如果您的主 Pane 中有可能,那么它的所有子 Pane 中也有可能。

通常,在基于 UI 的框架中,保持 Controller 的层次结构反射(reflect)其各自组件的层次结构是一个明智的想法。如果你想获取子元素的子 Controller (例如,为了将引用传递给父 Controller ),那么你不能依赖 FXML.load() 快捷方式,你必须使用更长的语法:

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

关于java - 在javafx中加载多个fxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327157/

相关文章:

java - catch block 中的空指针

JavaFX 可调整 Canvas 大小的问题

java - 如何访问由构造函数创建的对象变量

java - 在 JavaFX 中使用多个选择框来过滤 ListView

java - 如何阅读 JSch 命令输出?

Java:何时使用线程池的指南?

java - 是否有任何可靠的建议来源支持或反对使用 Optional 作为对象转换机制

java - 从javafx中的 Controller 调用其他类方法

JavaFX:右键单击菜单项

java - OpenCV 不适用于 JavaFx