Java 获取控制器的现有实例

Java 获取控制器的现有实例,java,javafx,controller,Java,Javafx,Controller,我正在编写一个javafx应用程序,它管理简单的实体,如客户、预订和账单。对于gui,我定义了以下fxml,这是我的主要gui: <TabPane fx:id="mainTabPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="430.0" prefWidth="698.0" tabClosingPolicy="UNAVAILABLE"

我正在编写一个javafx应用程序,它管理简单的实体,如客户、预订和账单。对于gui,我定义了以下fxml,这是我的主要gui:

<TabPane fx:id="mainTabPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="430.0" prefWidth="698.0" tabClosingPolicy="UNAVAILABLE" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.MainController">
    <tabs>
        <Tab id="BoxTab" fx:id="boxManagementTab" text="Box Management">
            <content>
                <fx:include source="boxTab.fxml"/>
            </content>
        </Tab>
        <Tab text="Booking">
            <content>
                <fx:include source="bookingTab.fxml"/>
            </content>
        </Tab>
        <Tab text="Bill" >
            <content>
                <fx:include source="billTab.fxml"/>
            </content>
        </Tab>
    </tabs>
</TabPane>
在这些选项卡中,只有显示基本数据的表视图。每个选项卡都有自己的控制器。我面临的问题是,例如,当预订出现在新账单上时,我想删除它们。这意味着我需要为预订的Tableview设置新数据

我想使用FXMLLoader和load方法通过bill Controller中的Booking控制器访问Booking的TableView。但据我所知,每次使用load时,都会创建一个新的控制器实例。 那么,有没有办法访问已经存在的控制器实例,该实例在启动之后启动? 我想通过加载此选项卡的控制器来实现这一点。

如果仍然有FXMLLoader实例,只需调用FXMLLoadergetController即可获得创建的控制器实例。如果您需要在程序生命周期中稍后访问控制器,请确保将其分配给字段


好的,我考虑过了。但我不使用FXMLLoader加载方法,因为该选项卡会加载到main.fxml文件中,如上面的代码段所示。是否有一种方法可以访问选项卡使用的加载程序?在这种情况下,我很确定您无法以任何方式访问控制器,除非您在代码中的某个地方处理选项卡加载。如何做到这一点,在。当我回到电脑前,我可以找出其他链接。请参阅。