我有一个Controller,我们称之为GeneralController,它创建一个TabPane以及两个新标签。新标签都有自己的控制器,“Tab1Controller”和“Tab2Controller”。 在GeneralController中,我创建了一个Object“MyObject”。此Object包含一些数据,可以在Tab1Controller和Tab2Controller中进行修改。 到目前为止,非常好。
“Tab1Controller”和“Tab2Controller”都有一个initController函数,它将“MyObject”作为参数。这样,我可以使用“MyObject”将两个控制器初始化。
GeneralController:
// Similar function for Tab2Controller
private void createTab1(ObjectProperty<MyObject> myObject) {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("path/to/tab1.fxml"));
Tab tab1 = (Tab) loader.load();
Tab1Controller tab1Controller = loader.getController();
tab1Controller.initController(myObject)
generalTabs.getTabs().add(tab1);
}
catch (IOException ex) {
ex.printStackTrace();
}
}
Tab1Controller / Tab2Controller:
public void initController(ObjectProperty<MyObject> myObject) {
this.myObject = myObject;
}
我的问题出现了: 我如何以最佳方式确保我在Tab1Controller和Tab2Controller中保留最新的标签,控件,节点,图表等等?
在Tab1Controller和Tab2Controller中创建setOnSelectionChanged-Listener并更新所有可能的数据更改是否合理?