如何集中弹出窗口?

时间:2017-04-25 17:53:59

标签: java javafx jfoenix

所以我在弹出窗口中使用了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);
        }
    }

1 个答案:

答案 0 :(得分: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);
});

请参阅here以从您的控制器访问该场景。