Добавьте верхнее меню к центру сетки JavaFX - PullRequest
0 голосов
/ 23 октября 2018

Я очень новичок в JavaFX.Я использую панель сетки, чтобы держать мои элементы по центру страницы независимо от того, как изменяется размер окна.Я хочу добавить меню, которое проходит вдоль верхней части.Я быстро обнаружил, что grid.setTop (menuBar) не является функцией-членом панели сетки.Есть ли способ к этому?

Могу ли я создать два разных типа панелей в одной сцене?IE, GridPane для центрирования элементов и BorderPane для отображения меню вверху?Или я должен использовать CSS-стили, чтобы получить верхнюю строку меню?

Вот код, который я использую:

public void start(Stage primaryStage) {
    try {
    primaryStage.setTitle("Bapu Inventory");
    BorderPane root = new BorderPane();
    GridPane grid = new GridPane();
    grid.setAlignment(Pos.CENTER);
    grid.setHgap(10);
    grid.setVgap(10);
    grid.setPadding(new Insets(25, 25, 25, 25));
    Text scenetitle = new Text("Welcome");
    grid.add(scenetitle, 0, 0, 1, 1);


    MenuBar menuBar = new MenuBar();
    menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
//This is the line I can't figure out. How do I get this to position at top left?
    grid.setTop(menuBar);

Любая помощь будет принята с благодарностью.Я просмотрел документацию, предоставляемую Oracle, но не нашел нигде в списке этой функции.

1 Ответ

0 голосов
/ 23 октября 2018

Проверьте, хотите ли вы:

public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();

            //Create your menu
            final Menu menu1 = new Menu("File");
            final Menu menu2 = new Menu("Options");
            final Menu menu3 = new Menu("Help");
            MenuBar menuBar = new MenuBar();
            menuBar.getMenus().addAll(menu1, menu2, menu3);

            //Your GridPane
            GridPane grid = new GridPane();
            grid.setAlignment(Pos.CENTER);
            grid.setHgap(10);
            grid.setVgap(10);
            grid.setPadding(new Insets(25, 25, 25, 25));
            Text scenetitle = new Text("Welcome");
            grid.add(scenetitle, 0, 0, 1, 1);

            //Add them  to root (BorderPane)
            root.setTop(menuBar);
            root.setCenter(grid);


            Scene scene = new Scene(root,400,400);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
}
...