我是JavaFX的新手,我在设置新窗口位置时遇到了问题,与父窗口位置有关。我想将新窗口打开在父窗口的中心。
我尝试了以下两种方法:
1)初始化所有者 - 我认为初始化所有者会将我的窗口打开在父窗口的中心,但它并没有这样做。
我尝试了以下两种方法:
1)初始化所有者 - 我认为初始化所有者会将我的窗口打开在父窗口的中心,但它并没有这样做。
FXMLLoader fxmlLoader = new FXMLLoader(AddUserController.class.getResource("/view/addUserStage.fxml"));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.initOwner(parentStage);
stage.showAndWait();
2) 当窗口显示时重新定位 - 它能够工作,但是当窗口显示后,我会看到它最初的位置,然后我才会看到它被移动到新计算的位置。我不能接受这样的结果。
FXMLLoader fxmlLoader = new FXMLLoader(AddUserController.class.getResource("/view/addUserStage.fxml"));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.initOwner(parentStage);
stage.setOnShown(event -> controller.onWindowShown());
stage.showAndWait();
在onWindowShown函数中,我设置了窗口的新X和Y位置,因为只有在显示后,我才能知道窗口的宽度和高度,并且可以轻松计算新的位置。
如何在调用showAndWait函数之前将子窗口的位置设置为父窗口的中心位置?