我有一个borderpane,我加载了一个fxml(别名FirstPanel),里面有相对控制器,并位于中心。 fxml包含一个TableView和一个按钮,它应该加载另一个fxml(别名SecondPanel)和相对控制器,而不是第一个面板。基本上,SecondPanel需要显示关于表中所选数据的一些细节。JavaFX加载母公司控制器内的FXML
是否可以做到这一点?我如何获得我的FirstPanel的父级,并将其用于SecondPanel而不是第一个?
UPDATE
我已经尝试了许多解决方案,但没有达到我的目标。应用程序加载仅包含象父控制一个AnchorPane的UsersMainPageController,所以这是相对的代码:
[UsersMainPageController]
public class UsersMainPageController implements Initializable {
private PostOffice application;
@FXML
private AnchorPane ParentControl;
public void setApp(PostOffice application){
this.application = application;
}
public void loadPage(String pageName) {
try {
URL url = getClass().getResource(pageName);
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(url);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
AnchorPane page = (AnchorPane) fxmlLoader.load(url.openStream());
ParentControl.getChildren().clear();///name of pane where you want to put the fxml.
ParentControl.getChildren().add(page);
}
catch (IOException e) {
e.printStackTrace();
}
}
public void loadManageUsers() {
loadPage("UsersManage.fxml");
}
public void loadListUsers() {
loadPage("UsersList.fxml");
}
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
loadListUsers();
}
}
loadListUsers与包含与TableView中的相对控制器UsersListController调用UsersList.fxml一些记录和一些按钮。当我点击一个特定的按钮时,它应该使用相对控制器UsersManageController调用loadManageUsers,该控制器包含一些用于编辑数据和插入新用户的字段。当编辑或插入用户时,它应该能够使用TableView返回到上一页并清除当前页面(在这种情况下为UsersManageController)。
[UsersListController]
public class UsersListController implements Initializable {
private UsersMainPageController mainController;
@FXML
private void handleButtonEditAction(ActionEvent event) throws IOException {
mainController.loadManageUsers();
}
}
[UsersManageController]
public class UsersManageController implements Initializable {
private UsersMainPageController mainController;
@FXML
private void handleButtonBackAction(ActionEvent event) throws IOException {
mainController.loadListUsers();
}
}
当我从UsersListController
的ButtonEdit
点击加载UsersManageController
,我得到这个错误:
Caused by: java.lang.NullPointerException
at postoffice.multiuser.UsersListController.handleButtonAggiornaAction(UsersListController.java:210)
... 50 more
我们可以帮助您更好,如果你给我们你的代码的一些相关部分。 – mathielo