2017-12-27 765 views
0

鉴于我有一个FXML表示创建数据记录的表单。如果我仅将此FXML用于CreateRecordController,我可以直接在FXML中绑定控制器,并使用fx:id将控件绑定到此控制器。JavaFX 8:FXML的重用

但是,如果我想重复使用此FXML作为EditRecordController,我该怎么办?我无法在FXML中绑定两个控制器。有没有办法在FXML加载器中执行此绑定?

回答

2

在加载fxml之前,您可以将控制器实例传递给FXMLLoader。这就要求fx:controller属性是从FXML文件缺失:

Object controller = ... // create an instance of the desired controller class here 

FXMLLoader loader = new FXMLLoader(getClass().getResource("/some/path/myfxml.fxml")); 
loader.setController(controller); 

Node root = loader.load(); 

注:绑定是错误的术语在这里,因为你不分配控制器任何JavaFX的财产。