Java: Swing の非公開プロパティ

Alexander Potochkin 氏による下記の blog エントリを、勝手に意訳してみる。

Swing team reveals their secrets !
http://weblogs.java.net/blog/alexfromsun/archive/2006/04/swing_team_reve_1.html

Swing チームが秘密を大公開!

皆さんもご存知の通り、Swing と AWT の挙動はコマンドラインプロパティで変更することができます。
例えば、下記のコマンドラインプロパティを使えば、お望みのルックアンドフィールに設定することができます。

swing.defaultlaf

詳細はこちらをご覧頂くとして、例えば次のように指定します。

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel <YourApp> 

こうすると、アプリケーション起動時にデフォルトで Windows LaF が使用されます。他にもあります。

java.awt.headless

このプロパティは、アプリケーションを謎のヘッドレスモードに切り替えます (ご自宅では試さないでくださいね〜)。
ただ、Swing にはもっとスゴい未公開プロパティがあることは、あまり知られてないみたいですね。Swing チームのメンバーでさえ全部は知らないし。大変な苦労をして機能を実装したのに、後になってその問題をさくっと解決するプロパティを見つける、なんてこともあるかもしれません。
Mustang で、かの有名な灰色の四角形*1が改善されていることはご存知でしょうか。これ、実は、

swing.grayrect.color

というプロパティを Gray (デフォルト値の灰色) から Transparent (透明) に変更するだけで解決できるのです。

java -Dswing.grayrect.color=Transparent 

これだけで、灰色の四角形を目にすることはなくなります。一番驚くのは、これが java 1.1 でも使えてしまうということです!
灰色の四角形を透明にするのがイヤなら、好きな色に変えることができます。例えば、

swing.grayrect.color=Violet

とすれば、退屈な灰色の四角形が、美しい紫にはやがわり!

他にもいくつかプロパティをご紹介しておきましょう。指定できる値を | で挟んで並べてあり、デフォルト値にはアスタリスクをつけてあります。

swing.runtwiceasfast=true*|false

Swing を倍速にします。

swing.completeleremoveawt=true|false*

このプロパティは実装途中。AWT チームからは、本当に要るのかコレ、と疑問の声あり。

swing.bugsnumber=ALOT | MEDIUM | AFEW* | NONE

値 NONE は、まだ完全にはテストされていませんので、試さないことをオススメしておきます。

java2d.speedofpainting=LOW | MEDIUM | FAST* | UNIMAGINABLE

このプロパティに値 UNIMAGINABLE を指定すると、Swing コンポーネントが目にも止まらぬ速度で描画されるようになります。

この一覧には、もっとプロパティを足さないとですね。他にもご存知でしたら、ぜひ教えてください。

*1:訳注: 灰色の四角形とは、描画処理の遅れている部分が灰色で表示される現象のこと。アプレット起動中なんかによくありますよね。Mustang こと Java 6 でダブルバッファが導入され、灰色領域を見ることは少なくなりました