3

macify Notepad の例は、私が見つけた「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 でリリースする場合、このような小さな工夫がうまくいきます。これはほとんどコピー アンド ペーストが可能ですが、about ボックスを表示するには 1 ~ 2 行追加する必要があります。本当にひどくテストする必要がある場合は、Web スタート、ドロップボックスの公開リンク、および近所の Apple Store を使用してください。

于 2012-06-19T05:07:25.393 に答える