Can';t使用系统菜单栏Javafx
我想在Stage中添加一个JavaFX菜单栏,但是让它使用Mac的系统菜单栏 我的问题是使用: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
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允许我这么做吗?是的,这就是这个小图书馆的目的。