JavaFX在窗口的右上角添加一个按钮

Jus*_*t94 1 java javafx button

我正在JavaFX中设计一个GUI,我已经添加了一个MenuBar不同的MenuItems.我也希望它从Windows默认CloseMinimize按钮中不修饰,所以我initStyle(StageStyle.UNDECORATED)Stage对象上调用了方法.现在我试图在窗口的右上角放置一个关闭按钮,以便我的用户可以关闭现在生成的窗口,但我不能使用BorderPanes setTop()方法,因为它属于MenuBar项目.
有没有办法浮动或添加按钮在MenuBar
或者至少让X另一个菜单栏中的按钮位于当前菜单栏之前.

这就是我现在使用的代码:
在此输入图像描述
这是我到目前为止在该start()方法中的代码:

public void start(Stage primaryStage) throws Exception {
    window = primaryStage;
    window.setTitle("Menu Example");


    MenuBar file = new MenuBar();
    file.setId("file");

    Menu fileMenu = new Menu("File");
    fileMenu.getItems().addAll(
            new MenuItem("New File..."),
            new MenuItem("Open file..."),
            new MenuItem("Save file"));
    fileMenu.setId("#fileMenu");



    Menu editMenu = new Menu("Edit");
    editMenu.getItems().addAll(
            new MenuItem("Undo"),
            new MenuItem("Redo"),
            new MenuItem("Cut"),
            new MenuItem("Copy"),
            new MenuItem("Paste")
    );

    Button closeButton = new Button("X");
    closeButton.setOnAction(event -> {
        Platform.exit();
    });
//        closeButton.setAlignment(Pos.TOP_RIGHT);

    file.getMenus().addAll(
            fileMenu,
            editMenu

    );

    layout = new BorderPane();
    layout.setTop(file);
    layout.setRight(closeButton);

    Scene scene = new Scene(layout, 300, 300);
    scene.getStylesheets().add("Viper.css");
    window.setScene(scene);
//        window.setMaximized(true);
    window.initStyle(StageStyle.UNDECORATED);
    window.show();
}
Run Code Online (Sandbox Code Playgroud)

fab*_*ian 5

放置ButtonMenuBar彼此相邻的HBox,并确保MenuBar是长这些节点的只有一个:

HBox hbox = new HBox(file, closeButton);

HBox.setHgrow(file, Priority.ALWAYS);
HBox.setHgrow(closeButton, Priority.NEVER);

layout.setTop(hbox);
//layout.setRight(closeButton);
Run Code Online (Sandbox Code Playgroud)