GroovyでSwingX

いまさらながらgroovy始めました。
Java で Swing で GUI なアプリを組んでいるんですが、
手続的なレイアウト構築はもう嫌だなぁと思っていて、
Java FX あたりに注目してましたが、script はなくなるし、Linux対応はだいぶ先な感じだし。
で、groovyでほぼ宣言的なレイアウトが組めそうだと知り、試しています。
groovyには標準でSwingBuilderというクラスがありますが、
SwingXに対応したSwingXBuilderもあるとのことで、
id:skrb さんのJava技術最前線:ITproの記事
Yet Another Swing - SwingX 第2回 Swingには存在しないコンポーネント
のタスクペインをgroovyで書き直して見ました。

import groovy.swing.SwingXBuilder
import java.awt.event.KeyEvent
import javax.swing.WindowConstants as WC

class TaskPaneDemo {
  def static SwingXBuilder swing = new SwingXBuilder()

  TaskPaneDemo() {
    def frame1 = swing.frame(title:"TaskPane Demo", size:[200,300], defaultCloseOperation:WC.EXIT_ON_CLOSE) {
      scrollPane() {
        taskPaneContainer() {
          taskPane(title:"ファイル", collapsed:true, mnemonic:KeyEvent.VK_F) {
            button(text:"Open", actionPerformed: { println "open" } ) // ★
            button(text:"Save", actionPerformed: { println "save" } )
          }
          taskPane(title:"オプション", mnemonic:KeyEvent.VK_O) {
            bg1 = buttonGroup()
            checkBox(text:"Option 1", selected:true, buttonGroup:bg1)
            checkBox(text:"Option 2", buttonGroup:bg1)
            checkBox(text:"Option 3", buttonGroup:bg1)
          }
        }
      }
    }
    frame1.visible = true
  }

  static void main(args) {
    swing.edt {
      new TaskPaneDemo()
    }
  }
}

コメントで★となっているあたりをbuttonで書いちゃいましたが、元記事では AbstractAction を使ってました。
groovy+SwingXBuilderでAbstractActionをどう扱うか分からなかったので、buttonにしちゃいました。(^^;

Ubuntuでの実行結果


環境

Ubuntu 11.04 64bit
Java SE 7
Groovy 1.8.2
swingx-core-1.6.2.jar
swingxbuilder-0.1.8.1.jar