因此,我将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以从控制器访问场景。

09-04 09:57