当前位置:首页 > 操作系统 > MacOs

为了使Java应用程序Mac化,赶上about事件,我是否必须实现菜单?

The macify Notepad example是我可以找到的“ macification”的唯一示例,我猜除了菜单可以完全搞乱我的布局之外,其他都很好.
我在Java方面非常非常新,所以我遵循这些示例,但是确实必须使用此菜单.
没有菜单,有没有办法捕捉“关于”东西?毕竟,即使没有Mac OS,有关Mac OS的事情似乎仍然存在.标准程序等
我没有Mac来测试代码,因此反复试验受到严格限制…

怎么做?

解决方法:

有点死补,但这是我一直使用的代码.但是,它很复杂,并使用反射来避免在非Mac系统上引发错误.

在您的应用初始化或作为静态代码块时:

<code>if (System.getProperty("os.name").contains("Mac")) {
    try {
        Object app = Class.forName("com.apple.eawt.Application")
            .getMethod("getApplication")
            .invoke(null);

        Object al = Proxy.newProxyInstance(
            Class.forName("com.apple.eawt.AboutHandler").getClassLoader(),
            new Class[]{Class.forName("com.apple.eawt.AboutHandler")},
            new AboutListener()
        );

        app.getClass()
            .getMethod("setAboutHandler", Class.forName("com.apple.eawt.AboutHandler"))
            .invoke(app, al);
    }
    catch (Exception e) {
        //fail quietly
    }
}
</code>

最后一个花括号后在源文件的底部

<code>public class AboutListener implements InvocationHandler {

    public Object invoke(Object proxy, Method method, Object[] args) {
        //Show About Dialog
        return null;
    }
}
</code>

在Java中发布完整的应用程序时,类似以下内容的内容会很不错.这应该大部分是可复制粘贴的,但是您需要添加一两行以显示一个About框.如果您真的需要测试,请使用网络启动,投递箱公共链接和附近的Apple Store.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐