因此,我将jfoenix JFXPopup组件用于弹出窗口。终于让弹出窗口显示出来之后。我意识到弹出窗口是相对于您传递的所有者节点显示的。我的问题是有没有办法显示相对于场景的弹出窗口,以便我可以居中?
不幸的是,您无法将弹出窗口置于所有者节点的中心,只能将其上下移动或左右移动?
Popup relative to the search textfield in the middle of the application
//Current Code
@FXML
protected void handleLoginButton(ActionEvent event) {
System.out.println("Popup BUtton clicked");
if (!loginPopup.isShowing()) {
System.out.println("Popup is open!");
//loginPopup.show(searchBtn, JFXPopup.PopupVPosition.BOTTOM, JFXPopup.PopupHPosition.LEFT);
loginPopup.show(searchBtn);
}
}
最佳答案
调用show
时使用场景的根窗格,并计算中心位置;
popupRoot.setPrefWidth(200);
popupRoot.setPrefHeight(300);
button.setOnAction(event -> {
JFXPopup loginPopup = new JFXPopup(popupRoot);
Bounds rootBounds = scene.getRoot().getLayoutBounds();
loginPopup.show(scene.getRoot(), JFXPopup.PopupVPosition.TOP, JFXPopup.PopupHPosition.LEFT,
(rootBounds.getWidth() - popupRoot.getPrefWidth()) / 2,
(rootBounds.getHeight() - popupRoot.getPrefHeight()) / 2);
});
请参见here以从控制器访问场景。