HBox: подходит для родительского AnchorPane Javafx, не используя FXML
Как мы можем установить hbox, соответствующий его родительскому AnchorPane, как мы делаем в FXML sceneBuilder.
AnchorPane root = new AnchorPane();
Scene scene = new Scene(root, 700, 500);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
//MenuBar
MenuBar menuBar=new MenuBar();
Menu file=new Menu("File");
MenuItem loadStudentData=new MenuItem("Load Student Data Ctrl+L");
MenuItem saveStudentData=new MenuItem("Save Student Data Ctrl+S");
MenuItem exit=new MenuItem("Exit Ctrl+X");
Menu help=new Menu("Help");
MenuItem about=new MenuItem("About");
file.getItems().add(loadStudentData);
file.getItems().add(saveStudentData);
file.getItems().add(exit);
help.getItems().add(about);
menuBar.getMenus().addAll(file);
menuBar.getMenus().addAll(help);
HBox hboxMenu=new HBox();
hboxMenu.getChildren().add(menuBar);
HBox.setHgrow(menuBar, Priority.ALWAYS);
root.getChildren().add(hboxMenu);
primaryStage.setScene(scene);
primaryStage.show();
Я хочу, чтобы menuBar получал автоматическое изменение размера при изменении размера окна.
1 ответ
Вы должны установить ограничения AnchorPane для hbox:
AnchorPane.setLeftAnchor(hboxMenu, 0d);
AnchorPane.setRightAnchor(hboxMenu, 0d);
(Но предпочтительный способ использования MenuBar
ставит его в верхнюю часть BorderPane
)