所以我在弹出窗口中使用了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);
}
}
答案 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以从您的控制器访问该场景。