MacOSXのJava用システムプロパティの使い方【追記】

Mac用P3のLook&Feelを決定しているのは、

apple.laf.useScreenMenuBar
apple.awt.brushMetalLook

と言ったシステムプロパティなんだけど、今までP3ではこれをパッケージの中のInfo.plistに書いていた。
しかし、これでは設定の種類毎に配布することになって面倒。何かいい手は無いものか、と思案した所…なんのこたーない、要はFrameが作られる前にsetすればいいだけなんだってことに気づいた。

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class SampleFrame {

    public static void main(String[] args) {
        if (System.getProperty("os.name").contains("Mac")) {
                // falseにするとAquaになるので白くなるよ
                System.setProperty("apple.awt.brushMetalLook", "true");
        }
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                frame.setSize(300, 200);
                frame.setVisible(true);
            }
        });
    }

}

これで上手くいくハズ。


てなわけでMac版P3は、次のVerから32bit版/64bit版(動作するJavaVM指定は必要なのでした)の二つだけを配布します。設定ダイアログでMetalを使うかAquaを使うか設定した上で再起動、というスタイルになります。
どうやら「apple.awt.HOGE」はUIに絡むインスタンスを作ったら設定できないらしい。(thx id:t_yano)
逆言うと、Info.plistに書かなくても、インスタンス作る前にガガガっと設定してしまうことは可能・・・なんだけど、てことは、やはり今まで通りMetalとAquaを配布しないといけないのか・・・orz

【追記】
コード一部間違えていたので修正