Skip to end of metadata
Go to start of metadata


AST変換の概要を掴んでいただくため、Swing開発者にとって便利な @Bindable と @Vetoable という二つの変換から話し終えることにしましょう。SwingのUIを作成した際、UI要素の値の変更を監視したいと思うでしょう。この目的のためによく使われる手法は、JavaBeansのPropertyChangeListenersを使ってクラスフィールドの変更を通知させる方法です。最終的には、よくあるお決まりのJava Beansのコードを書くことになるでしょう。


幸運にも、Groovyと@Bindableアノテーションを使えば、このコードは非常に簡潔にすることができます。


さて、テキストフィールドとそれに紐付けられた、あるデータモデルのプロパティの値が紐付けの宣言を行うGroovyのSwingビルダーにあるnew bind()メソッドを見てみましょう。


さらにこうも書けます。


この紐付けはクロージャを使った単純な構文でも動きます。例えば、こんな様なものでも可能です。


また、マップとリストの似たような機能を持つ ObservableMap と ObservableList に興味を持っているかもしれません。


@Bindable に加えて、@Vetoable もまた、プロパティを変更不可とするように変換できます。では、実行者の名前に'z'を含むことを許可しないという条件を持ったTrompetistクラスで考えてみましょう。


もっと徹底的にSwingビルダーの紐付けの例を見ていきましょう。


このスクリプトを走らせると、テキストフィールドとその下にラベルのあるフレームが現れます。このラベルのテキストはテキストフィールドの内容に紐付けられています。


SwingBuilderはここ一年くらいでとてもよい進化を遂げて来たので、GroovyのSwingチームはこの機能をベースとした新たなプロジェクトを立ち上げることを決めました。Griffonは、Grailsのパラダイムである 設定より規約(CoC: Convention over Configuration) を採用して、それ自身のプロジェクト構造やプラグインシステム、Gantのスクリプティング能力などをうまくこなしています。


もしあなたがSwingのリッチクライアントを開発するときには、Griffonを確認してみて下さい。

  • No labels