gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:32:52 28 4
gpt4 key购买 nike

我正在用 JavaFX 设计一个 GUI,我在其中添加了一个带有不同 MenuItemMenuBar。我还希望它不被 Windows 默认的 CloseMinimize 按钮修饰,所以我调用了方法initStyle(StageStyle .UNDECORATED)Stage 对象上。现在我试图在窗口的右上角放置一个关闭按钮,以便我的用户可以关闭现在生成的窗口,但是我不能使用 BorderPanesetTop () 方法,因为它属于 MenuBar 项。
有没有办法在 MenuBar 顶部 float 或添加按钮?
或者至少在另一个菜单栏中放置 X 按钮,该按钮将位于当前菜单栏之前。

这就是我现在的代码:
enter image description here
这是我目前在 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();
}

最佳答案

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

关于JavaFX 在窗口右上角添加一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com