2014年6月17日火曜日

SwingBuilderでツリーの背景色を設定する

SwingBuilderでツリーの背景色を設定するには、以下のコードのようにbackgroundを使用します。ノードの背景色も合わせて同じように変更します。

サンプルコード
import java.awt.*
import javax.swing.*
import javax.swing.tree.*
import groovy.swing.*

class MyNode extends DefaultMutableTreeNode
{
  MyNode(params)
  {
    super(params)
  }
  public String toString()
  {
    return userObject?.name
  }
}

sb = new SwingBuilder()
sb.edt {
  frame(
    title: "background color of tree example",
    show: true,
    resizable: true,
    size: [300, 200],
    defaultCloseOperation: WindowConstants.EXIT_ON_CLOSE
  ){
    scrollPane(){
      tree(id:"tree", rootVisible: false, background: new Color(0xff, 0xff, 0xbb))
      // ノードの背景色も同じように変更する
      tree.cellRenderer.setBackgroundNonSelectionColor(new Color(0xff, 0xff, 0xbb))
      tree.model.root.removeAllChildren()
      def node1 = new MyNode([name:"Node1"])
      node1.add(new MyNode([name:"Leaf1"]))
      node1.add(new MyNode([name:"Leaf2"]))
      tree.model.root.add(node1)
      tree.model.root.add(new MyNode([name:"Node2"]))
      tree.model.reload(tree.model.root)
      tree.expandRow(0)
    }
  }
}
実行時画面

動作環境
groovy 2.2.2, JDK 1.7 update55

0 件のコメント:

コメントを投稿