我想在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);
}
}
SURPG_Mac.class和SURPG_Main.class是扩展 JavaFX 应用程序的类。
我有另一个设置GUI的类,一个带有BorderPane的阶段。我有另一个具有公共静态方法的类,可以调用它来设置Menubars,如下所示:
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集成不同的兼容性问题。
有人能帮我吗?
非常感谢!
看看这个项目: https://github.com/codecentric/NSMenuFX 它允许你有一个更像Mac的菜单栏。但是,在使用它之前,您可能还必须清理有些奇怪的项目设置。
问题内容: 首先,我是一位经验丰富的C程序员,但是刚接触python。我想使用pyqt在python中创建一个简单的应用程序。让我们想象一下这个应用程序,就像它在运行时一样简单,它必须在系统托盘中放置一个图标,并且在菜单中提供了退出该应用程序的选项。 这段代码有效,它显示了菜单(为了简化起见,我没有连接退出动作,依此类推) 但这不是: 我可能想念一些东西。没有错误,但是在第二种情况下,当我单击鼠标
5.5.2.菜单系统与 Intent 我们还需要一个地方来切换界面,因此在这里引入 Android 的菜单系统及 Intent 机制,学习通过发送 Intent 实现切换界面的方法。
顶部菜单栏中,设有文件、快捷代码、资源、工具、项目、视图和帮助控件,具体说明如下。 名称 说明 文件 可以控制新建项目、新建文件、保存和运行。文件支持.js、.css、.html和.json格式。 快捷代码 可直接将所需代码添加到所编辑的项目文件(光标所在位置)中。 资源 可打开工具栏中的相应面板,将提供的模型、园区、地图等资源加载到项目文件中。还可以查看并设置我的项目、我的园区和我的地图。参阅资
左侧菜单栏包括图层、场景和底图。本章节中,我们将详细介绍菜单栏各功能的使用方法。 图层 图层的概念跟制图软件大致相同,可以理解为是堆叠在一起的透明纸。在 CityBuilder 中,通过图层可将数据文件加载到场景中,如城市建筑、道路、水系等。除了快速入门中介绍的加载公共数据以外,我们还可以上传本地的数据文件。 按下列步骤,将我的数据加载到图层中,并设置图层属性。 在左侧菜单栏中,点击图层右侧添加图
CampusBuilder 场景编辑器的顶部菜单栏设有7个基本功能项,包括文件、编辑、选择、工具、视角、插件和帮助。 文件 顶部菜单栏的文件控件包含以下功能: 可以打开本地 3D 场景文件; 将文件保存/另存为,在我的场景中可以看到保存后的场景,最后保存时的窗口图将作为场景的封面; 导入模型文件,支持的文件格式包括 .fbx, .obj, .3ds, .stl, .dae, .3d, .3mf 等
包括开始菜单,在线地图菜单、操作菜单、分析菜单、三维场景菜单、视图菜单以及数据处理菜单等7个主菜单。