获取现有的控制器实例

时间:2017-03-19 19:34:44

标签: 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" 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>

在这些标签中,只有 Tableviews 显示基本数据。每个标签都有它自己的控制器。我面临的问题是,我想要在新账单上出现时删除预订。这意味着我需要将新数据设置为预订的 Tableview

我想通过使用FXMLLoader和load()方法在账单控制器中通过预订控制器访问预订的TableView。但据我所知,每次使用load()时都会创建一个新的控制器实例。 那么有没有办法如何访问已经存在的控制器实例,该控制器是在?之后启动的? 我想通过加载此选项卡的控制器来完成此操作。

1 个答案:

答案 0 :(得分:-1)

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

Documentation