0

所以我在弹出窗口中使用 jfoenix JFXPopup 组件。在终于让弹出窗口显示之后。我意识到弹出窗口是相对于您传递它的所有者节点显示的。我的问题是有什么方法可以显示相对于场景的弹出窗口,以便我可以将其居中?

不幸的是,您不能将弹出窗口居中在所有者节点上,您只能上下或左右移动它?

相对于应用程序中间的搜索文本字段的弹出窗口

//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);
        }
    }
4

1 回答 1

1

调用时使用场景的根窗格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);
});

请参阅此处以从您的控制器访问场景。

于 2017-04-26T00:35:07.573 回答