Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向以JavaFX为中心的网格窗格添加顶部菜单_Java_Css_Javafx_Gridpane - Fatal编程技术网

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

向以JavaFX为中心的网格窗格添加顶部菜单,java,css,javafx,gridpane,Java,Css,Javafx,Gridpane,我对JavaFX非常陌生。无论窗口大小如何调整,我都使用网格窗格将项目保持在页面中心。我想添加一个沿顶部运行的菜单。我很快发现grid.setTop(菜单栏)不是grid窗格的成员函数。有办法吗 我可以在一个场景中创建两种不同类型的窗格吗?也就是说,一个网格窗格将项目居中,一个边框窗格将菜单置于顶部?还是应该使用CSS样式将菜单栏置于顶部 下面是我正在使用的一些代码: public void start(Stage primaryStage) { try { primarySta

我对JavaFX非常陌生。无论窗口大小如何调整,我都使用网格窗格将项目保持在页面中心。我想添加一个沿顶部运行的菜单。我很快发现grid.setTop(菜单栏)不是grid窗格的成员函数。有办法吗

我可以在一个场景中创建两种不同类型的窗格吗?也就是说,一个网格窗格将项目居中,一个边框窗格将菜单置于顶部?还是应该使用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提供的文档,但没有在任何地方找到此功能。

检查这是否是您想要的:

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();
        }
}

我的建议:使用
边框窗格
,将菜单添加到其顶部。然后将您的
GridPane
添加到BorderPane的中心。创建BorderPane后,我有什么特别的事情要做吗?当我尝试这样做时,网格窗格似乎覆盖了我在BorderPane中的所有内容。如果您只向
GridPane
添加一个元素,则最好使用更简单的布局
VBox
允许您将两者都添加为子对象,并且可以设置为水平对齐
文本
VBox.margin
可以用来替换填充…这正是我想要的!我正在反向初始化它们。