Jus*_*t94 1 java javafx button
我正在JavaFX中设计一个GUI,我已经添加了一个MenuBar不同的MenuItems.我也希望它从Windows默认Close和Minimize按钮中不修饰,所以我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)
放置Button和MenuBar彼此相邻的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)