2017-04-25 49 views
0

所以我使用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

使用根窗格当你打电话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从您的控制器访问现场。