2

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

このアプリケーションは起動しますが、MenuMenuBarは 3 つのドット (...) としてのみ表示されます。ただし、 を押すALT+Fと開くので、そこにあります。

私が理解していることから、Menuアイテムには属性がない、widthまたは類似の属性がないため、設定できません。ルートノードが であることに関係があると思われます。BorderPane他のすべての例で動作することがわかったので、ルートは aVBoxまたはその他のいずれかです。Vboxaをルート ノードとして配置MenuBarし、BorderPane` をルートに追加すると、目的の結果が得られるように見えますが、これは奇妙で不必要な回避策のように思えます。

それで、私はここで何が欠けていますか?MenuBar遺言書は特定の容器でしか見えないというのは本当ですか? BorderPaneこの点で aと aの違いは何VBoxですか? 誰かが説明したり、私が見逃したドキュメントの一部を教えてくれたりしたら、とても感謝しています。

4

1 に答える 1