2009/08/18

SwingBuilderでGroupLayoutを使ってみる。

Java6で追加されたGroupLayout(Matisse)をSwingBuilderから使ってみたらどうなるか、試してみました。
元ネタは、LayoutManagerShowdownGroupLayoutからです。
スクリプトはhttp://www.tobikkiri.org/files/groovy/GroupLayoutDemo.groovyに置きました。

GroupLayoutでは、Swingでの一般的なレイアウトマネージャとはレイアウトの指定方法が異なり、縦方向のレイアウトと横方向のレイアウトを別々に指定します。SwingBuilderでは、普通ならばレイアウトの指定を部品の作成時に指定しますので、2カ所以上のレイアウト指定には対応できません。
今回の例では、部品は一旦idを振って(もしくは変数に設定して)作成した後で、Swingでの方法と同じ様にしてレイアウトマネージャに設定する様にしました。あまり綺麗ではありませんが、仕方が無いですね。

GroupLayoutをSwingBuilderで利用する為には、もう一つ問題があります。
GroupLayoutのコンストラクタには、必ず引数としてコンテナが必要となりますが、SwingBuilderで通常使うLayoutFactoryではコンストラクタに引数を指定する事ができません。
これを解決する為に、引数を指定できる様にLayoutFactoryを拡張した、TargetLayoutFactoryを作成してみました。

今回のネタは、GroovyのMLのこれを参考にしました。

今後、LayoutManagerShowdownの中から、幾つかSwingBuilderで書き換えてみたいと思います。

ラベル: , , , , ,