Mac用P3のLook&Feelを決定しているのは、
と言ったシステムプロパティなんだけど、今まで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
【追記】
コード一部間違えていたので修正