3

macify 记事本示例是我能找到的唯一一个“macification”示例,除了完全搞砸了我的布局的菜单之外,我猜这一切都很好而且很漂亮。我在 Java 方面非常非常新,所以我会严格按照这些示例进行操作,但是这个菜单确实必须取消。有没有办法在没有菜单的情况下捕捉“关于”的东西?毕竟,即使没有 Mac OS 上的这个东西,它似乎也存在。标准程序等。我没有 Mac 来测试代码,所以反复试验受到严重限制......

这是怎么做到的?

4

1 回答 1

3

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

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

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
    }
}

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

public class AboutListener implements InvocationHandler {

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

当在 java 中发布一个完整的应用程序时,像这样的事情会产生很好的小触动。这应该主要是可以复制和粘贴的,但您需要添加一两行来显示一个关于框。如果你需要测试真的很糟糕,请使用 web-start、Dropbox 公共链接和附近的 Apple Store。

于 2012-06-19T05:07:25.393 回答