我有一個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