我有一个边框窗格,我正在加载一个 fxml(别名 FirstPanel),其中包含相对控制器并位于中心。fxml 包含一个 TableView 和一个按钮,该按钮应该加载另一个 fxml(别名 SecondPanel)和相关控制器而不是第一个面板。基本上,SecondPanel 需要显示有关表中所选数据的一些详细信息。
有可能做到吗?如何获取我的 FirstPanel 的父级并将其用于 SecondPanel 而不是第一个?
更新
我尝试了很多解决方案,但没有达到我的目标。应用程序加载只包含类似父控件的 AnchorPane 的 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 使用相关控制器 UsersListController 调用 UsersList.fxml,该控制器包含一个带有一些记录和一些按钮的 TableView。当我单击特定按钮时,它应该使用相关控制器 UsersManageController 调用 loadManageUsers,其中包含一些用于编辑数据和插入新用户的字段。当用户被编辑或插入时,它应该能够使用 TableView 返回到上一个页面并清除当前页面(在本例中为 UsersManageController)。
[用户列表控制器]
public class UsersListController implements Initializable {
private UsersMainPageController mainController;
@FXML
private void handleButtonEditAction(ActionEvent event) throws IOException {
mainController.loadManageUsers();
}
}
[用户管理控制器]
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