将顶部菜单添加到以 JavaFX 为中心的网格窗格

我对 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 提供的文档,但没有在任何地方找到此功能。


慕尼黑8549860
浏览 170回答 1
1回答

慕斯709654

检查这是否是您想要的: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();        }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java