Japanese Bindable and Vetoable transformation Add comment to Wiki View in Wiki Edit Wiki page Printable Version



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を確認してみて下さい。

 

Search

Results of your search request can come from various sources: the Groovy website itself, the JIRA issues, the API documentation, as well as a few other interesting Groovy-related blogs.

  By  -  pages  -  views  - last modified