首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaFX中制作OS X菜单栏

如何在JavaFX中制作OS X菜单栏
EN

Stack Overflow用户
提问于 2014-03-22 04:36:15
回答 5查看 14.1K关注 0票数 27

我无法在屏幕顶部将JavaFX MenuBar显示为标准的OS X菜单栏。

下面是我在我的Application子类中尝试的内容:

代码语言:javascript
复制
public void start(Stage primaryStage) throws Exception {
    final Menu menu1 = new Menu("File");
    final Menu menu2 = new Menu("Options");
    final Menu menu3 = new Menu("Help");

    MenuBar menuBar = new MenuBar();
    menuBar.getMenus().addAll(menu1, menu2, menu3);
    menuBar.setUseSystemMenuBar(true);

    primaryStage.setTitle("Creating Menus with JavaFX 2.0");
    final Group rootGroup = new Group();
    final Scene scene = new Scene(rootGroup, 800, 400, Color.WHEAT);


    rootGroup.getChildren().add(menuBar);
    primaryStage.setScene(scene);
    primaryStage.show();
}

我假设使用

代码语言:javascript
复制
menuBar.setUseSystemMenuBar(true);

可以做到这一点,但实际上它会让menuBar完全消失。

我在OS X 10.9上使用Java 1.8.0-b132

EN

回答 5

Stack Overflow用户

发布于 2015-03-05 17:18:21

我已经成功地使用了下面的代码:

代码语言:javascript
复制
MenuBar menuBar = new MenuBar();
final String os = System.getProperty("os.name");
if (os != null && os.startsWith("Mac"))
  menuBar.useSystemMenuBarProperty().set(true);

BorderPane borderPane = new BorderPane();
borderPane.setTop(menuBar);

primaryStage.setScene(new Scene(borderPane));
票数 21
EN

Stack Overflow用户

发布于 2014-03-22 21:58:34

看起来OS只有在里面有MenuItems的情况下才会显示菜单(这有点奇怪,因为你可以将功能附加到空菜单上)。

票数 9
EN

Stack Overflow用户

发布于 2016-09-22 07:07:03

我自己也遇到了这个问题--我注意到系统菜单栏最初不会出现在OSX中,直到我切换到另一个应用程序并返回。

setUseSystemMenuBar调用封装在runLater中确实做到了这一点,所以我得出了一个不科学的结论:在OSX成功注册应用程序菜单之前,需要设置更多的窗口。

代码语言:javascript
复制
Platform.runLater(() -> menuBar.setUseSystemMenuBar(true));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22569046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档