Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用系统菜单栏Javafx_Java_Eclipse_Javafx_Macos Sierra_Efxclipse - Fatal编程技术网

Can';t使用系统菜单栏Javafx

Can';t使用系统菜单栏Javafx,java,eclipse,javafx,macos-sierra,efxclipse,Java,Eclipse,Javafx,Macos Sierra,Efxclipse,我想在Stage中添加一个JavaFX菜单栏,但是让它使用Mac的系统菜单栏 我的问题是使用: menuBar.useSystemMenuBarProperty().set(true); 不起作用。我认为问题在于我的主要方法不是JavaFX应用程序的一部分。我的主要方法如下所示: public class SURPG_Launcher { public static com.apple.eawt.Application macApp; public static void main(Str

我想在Stage中添加一个JavaFX菜单栏,但是让它使用Mac的系统菜单栏

我的问题是使用:

menuBar.useSystemMenuBarProperty().set(true);
不起作用。我认为问题在于我的主要方法不是JavaFX应用程序的一部分。我的主要方法如下所示:

public class SURPG_Launcher {

public static com.apple.eawt.Application macApp;

public static void main(String[] args) {
    if(Toolbox.isMac()) {
        initMac(args);
    } else {
        Application.launch(SURPG_Main.class, args);
    }
}

private static void initMac(String[] args) {
    System.out.println("MacOS System detected!");
    macApp = com.apple.eawt.Application.getApplication();
    macApp.setPreferencesHandler(new PreferencesHandler(){
    @Override
    public void handlePreferences(PreferencesEvent arg0) {
        Platform.runLater(() -> {
            Stage prefs = new Stage();
            prefs.setMinHeight(200);
            prefs.setMinWidth(200);
            prefs.show();
        });
    }
});

Application.launch(SURPG_Mac.class, args);

}
}
SUPPG_Mac.class和SUPPG_Main.class是扩展JavaFX应用程序的类

我有另一个设置GUI的类,一个带有边框窗格的阶段。我有另一个类,它具有公共静态方法,可以调用该类来设置菜单栏,如下所示:

public class MenuControl {

public static MenuBar menuBar;
public static Menu menuFile;
public static Menu menuGame;
public static Menu menuTools;
public static MenuItem save;

public static void initMenusMac() {
    menuBar = new MenuBar();
    Platform.runLater(() -> {
        menuBar.useSystemMenuBarProperty().set(true);
    });
    menuFile = new Menu("File");
    menuGame = new Menu("Game");
    menuTools = new Menu("Tools");
    save = new MenuItem("Save");
    menuFile.getItems().add(save);
    menuBar.getMenus().addAll(menuFile, menuGame, menuTools);
    GUI_Main.totalLay.setTop(menuBar);
}

public static void initMenus() {
    menuBar = new MenuBar();
    menuFile = new Menu("File");
    menuGame = new Menu("Game");
    menuTools = new Menu("Tools");
    save = new MenuItem("Save");
    menuFile.getItems().add(save);
    menuBar.getMenus().addAll(menuFile, menuGame, menuTools);
    GUI_Main.totalLay.setTop(menuBar);
}
}
我的最后一点是,我无法更改它,因此主要方法是在SURPG_Mac或SURPG_main中,因为与Mac集成存在不同的兼容性问题

有人能帮我吗


提前非常感谢

看看这个问题:它允许你拥有一个更像mac的菜单栏。但是,在使用之前,您可能还需要清理一些奇怪的项目设置。

看看这个问题:它允许您拥有一个更像mac的菜单栏。但是,在使用之前,您可能还需要清理一些奇怪的项目设置。

对不起,NSMenuFX已被搁置。我们的目标是不使用除Oracle和我自己的库之外的任何库。还有,你说我奇怪的项目设置是什么意思?我需要清理什么?我不是故意冷淡的,我真的很想知道。如今,如果不使用外部库,严肃的软件开发是不可能的,我只是觉得让人的生活变得比必要的更困难没有任何价值。2.对于奇怪的项目设置,我指的是你摆弄com.apple.eawt.Application类。这会导致各种各样的问题,而且com.apple.eawt类在Java9中已经被放弃了。好的,我明白你的意思了。我100%同意第一点,我的目标是作为我的高级项目。不使用任何库。我可能得调整一下。。。第二点,我希望能够调整mac应用程序的首选项菜单/关于菜单和内容。。。NSMenuFX允许我这么做吗?是的,这就是这个小图书馆的目的。对不起,NSMenuFX被问到了。我们的目标是不使用除Oracle和我自己的库之外的任何库。还有,你说我奇怪的项目设置是什么意思?我需要清理什么?我不是故意冷淡的,我真的很想知道。如今,如果不使用外部库,严肃的软件开发是不可能的,我只是觉得让人的生活变得比必要的更困难没有任何价值。2.对于奇怪的项目设置,我指的是你摆弄com.apple.eawt.Application类。这会导致各种各样的问题,而且com.apple.eawt类在Java9中已经被放弃了。好的,我明白你的意思了。我100%同意第一点,我的目标是作为我的高级项目。不使用任何库。我可能得调整一下。。。第二点,我希望能够调整mac应用程序的首选项菜单/关于菜单和内容。。。NSMenuFX允许我这么做吗?是的,这就是这个小图书馆的目的。