当前位置: 首页 > 知识库问答 >
问题:

JavaFX选项卡窗格-多个控制器和多个FXML文件

湛宏旷
2023-03-14

我目前正在使用JavaFXML和场景生成器编码一个系统。我已经创建了一个登录页面,您可以登录为管理员或员工。在管理包我有管理。FXML和管理员控制器。

无论如何,我使用了一个TabPane,我有五个选项卡,第一个名为“customers”,所有的实现(代码)都在AdminController中,因为它是AnchorPane的设置根控制器。

正如您所想象的,在一个控制器类中编写这五个选项卡的所有代码将是非常冗长的。有没有一种方法可以让多个控制器类(每个选项卡一个)和一个FXML文件,或者让单个选项卡有多个FXML文件和控制器类?

共有1个答案

太叔昊苍
2023-03-14

是的,有可能。你要找的是神奇的

主要FXML:

<TabPane xmlns:fx="http://javafx.com/fxml"
fx:controller="my.package.MainController" fx:id="root">
    <tabs>
        <Tab text="First Tab">
            <fx:include fx:id="firstTab" source="FirstModule.fxml"/>
        </Tab>
        <Tab text="Second Tab">
            <fx:include fx:id="secondTab" source="SecondModule.fxml"/>
        </Tab>
    </tabs>
</TabPane>

主控制器:

public class MainController {
    @FXML
    private TabPane root;
    @FXML
    private FirstModuleController firstTabController;
    @FXML
    private SecondModuleController secondTabController;

    // other code
}

这里要注意的一件事是,我通过使用FXML文件中给定的fx: id包含了控制器本身,并在末尾添加了单词Controller。这指定您希望控制器与包含的fxml文件的根相关联,而不是根本身。例如,如果您的FirstModule.fxml的根是一个VBox,您可以通过键入@FXML私有VBox firstTab来包含该根

 类似资料:
  • 问题内容: 我有一个由一个控制器控制的fxml文件。我想将控制器分成多个部分,就像放置在一个控制器中会产生很长的代码一样。不幸的是,fx:controller只能放在根目录中。我对如何分离控制器有什么建议吗? 问题答案: 我建议创建自定义控件-使用几个较小的FXML文件,而不是一个大FXML文件。 这是本教程: http://docs.oracle.com/javafx/2/fxml_get_st

  • 问题内容: 我有一个常规的Twitter Bootstrap 3标签。我要做的就是控制 一个元素来控制多个容器。 在此示例中,当我更改标签时,仅第一个被更改。我要两个容器都改变,而不仅仅是第一个。 谢谢! 问题答案: 我将 data-target 属性添加到a元素并更改第二个tab内容中的id 我修改了这行 您的: 我的更新: 第二个选项卡内容,您的: 我的更新:

  • 在我的应用程序中有两个不同的阶段,它们是使用相同FXML文件的帮助屏幕。而不是创建两个FXML文件,我想只使用一个,并有两个控制器调用相同的fxml。 唯一的问题是控制器是在FXML文件中分配的。那么,有没有一种方法可以通过控制器类本身中的代码来更改指定的控制器? 我真的希望避免复制一个FXML文件,只是为了更改每个文件中的控制器。提前谢谢。

  • 我已经找到了一堆关于这个主题的帖子,但是我仍然无法将一个对象从Controller1传递到Controller2。有没有一个完整的教程或一些例子项目这样做? 我已经走了这么远,直到我被卡住了: 国家类 很抱歉这么长的帖子,我试图尽可能完整,否则我永远不会明白...

  • 问题内容: 我试图在JavaFX中获得TableView来动态显示内容。 当我运行程序时,出现此错误: 我的控制器名为“ UserInterfaceController.java”,它与FXML文件位于同一软件包下,我也已将该软件包导入了FXML中。为什么找不到控制器? FXML文件: 控制器: 主类: 问题答案: 使用FXML的全限定名来引用您的控制器: 后续问题的答案 对以下问题的回答解释了为

  • 我试图在JavaFX中获得一个TableView来动态显示内容。 当我运行程序时,出现以下错误: 我的控制器名为“UserInterfaceController.java”,它与FXML文件在同一个包下,我也在FXML中导入了包。为什么找不到控制器? FXML文件: 控制器: 主要类: