我正在编写一个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()时都会创建一个新的控制器实例。 那么有没有办法如何访问已经存在的控制器实例,该控制器是在?之后启动的? 我想通过加载此选项卡的控制器来完成此操作。
答案 0 :(得分:-1)
如果您仍然拥有FXMLLoader
实例,则只需调用FXMLLoader#getController()
即可获取创建的控制器实例。如果需要在程序生命周期的后期访问控制器,请确保将其分配给字段。