JavaFX:在BorderPane中,菜单项仅显示为三个点

时间:2015-02-18 08:36:09

标签: javafx menubar borderpane

我正在尝试学习JavaFX,而我的Menus中的MenuBar遇到了问题。这是一个最小的例子:

public void start(Stage mainStage) throws Exception {
    BorderPane root = new BorderPane();
    Scene scene = new Scene(root, 1200, 1000, Color.WHITE);
    MenuBar menuBar = new MenuBar();
    Menu menuFile = new Menu("_File");
    menuBar.getMenus().add(menuFile);
    MenuItem add = new MenuItem("_New");
    menuFile.getItems().add(add);
    root.getChildren().add(menuBar);
    menuBar.prefWidthProperty().bind(mainStage.widthProperty());
    mainStage.setScene(scene);
    mainStage.show();
}

此应用程序启动,但Menu中的MenuBar仅显示为三个点(...)。但是当我按ALT+F时,它会打开,所以它就在那里。

根据我的理解,Menu项目没有width或类似属性,因此无法设置。我怀疑它与我的根节点是BorderPane有关,因为在其他每个例子中我发现它都有效,根就是VBox或其他东西。当我将Vbox作为我的根节点放置,然后将MenuBar和BorderPane`添加到根目录时,我似乎得到了预期的结果 - 但这对我来说似乎是一种奇怪且不可靠的解决方法。

那我在这里错过了什么? MenuBar只会在某些容器中看起来应该是这样吗?在这方面,BorderPaneVBox之间有什么区别?如果有人可以向我解释或指出我错过的文档的一部分,我将非常感激。

1 个答案:

答案 0 :(得分:2)

您正在使用BorderPane并使用getChildren().add()在其中添加MenuBar,这是不正确的。 BorderPaneVBox不同,不能接受任意数量的儿童,并分为5个特定职位:

  • 中心

孩子们进入这些职位中的任何一个。 Please go through the documentation for BorderPane

您需要使用以下方法将菜单栏添加到BorderPane的顶部:

root.setTop(menuBar);