Я пытаюсь создать ContextMenu, которое появляется в середине экрана при каждом нажатии клавиши выхода с клавиатуры.Я хочу использовать его для загрузки, сохранения и выхода в моей игре.Он будет вызываться из классов за пределами Main.
Проблема в том, что я не уверен, как узнать высоту и ширину ContextMenu в пикселях.Итак, я в растерянности относительно того, как центрировать его в окне.Я пытаюсь использовать Rectangle2D, чтобы найти центр, но он все еще немного выключен.
Как я могу отобразить свое ContextMenu в середине экрана?
Отображает мое ContextMenu:
/**
* Returns the Pane object so it can be made into a Scene object.
* Each Scene has it's own class
* Each class uses this method to create a Pane object for it.
* @return Pane
*/
public Pane getPane() {
// create a GridPane object
grid = new GridPane();
// create ContextMenu and set anchor points.
ContextMenu cm = Main.Org.createPopUpMenu();
cm.setOnShowing(event -> {
event.consume();
cm.setAnchorX(cm.getAnchorX() - cm.getWidth() / 2.0);
cm.setAnchorY(cm.getAnchorY() - cm.getHeight() / 2.0);
});
Rectangle2D bounds = Screen.getPrimary().getVisualBounds();
// show ContextMenu if escape key is pressed.
grid.setOnKeyReleased( event -> {
if(event.getCode() == KeyCode.ESCAPE) {
cm.show(grid, bounds.getWidth() / 2.0, bounds.getHeight() / 2.0);
}
});
return grid;
}
Класс организатора createPopUpMenu()
Метод:
/**
* Creates a pop-up menu for saving, loading, and exiting the game
* @return ContextMenu
*/
public ContextMenu createPopUpMenu() {
ContextMenu contextMenu = new ContextMenu();
MenuItem menuItem = new MenuItem();
//create ImageViews
image = new ImageView("/images/PopUpMenu_Exit.png");
// add ImageViews to MenuItems
menuItem.setGraphic(image);
contextMenu.getItems().add(menuItem);
menuItem.setOnAction( a -> {
// quit the game
Platform.exit();
System.exit(0);
});
return contextMenu;
}