S-JIS[2011-10-16] 変更履歴

Scala Tree(Swing)

ScalaSwingのツリーのメモ。


概要

現時点のScalaではJTreeのラッパークラスは用意されていないので、(Tableクラスを参考にして)自分で作る。

とりあえず、TreeNodeやTreeModelはJavaのSwingのクラスをそのまま使う。

import scala.swing.Component
import javax.swing.JTree
import javax.swing.tree.TreeModel

class Tree(model: TreeModel) extends Component {
  override lazy val peer: JTree = new JTree(model) with SuperMixin
}

Treeを表示する例:

import scala.swing.SimpleSwingApplication
import scala.swing.MainFrame
import javax.swing.tree._

object ShowTree extends SimpleSwingApplication {
  override def top = new MainFrame {
    title = "Treeの表示"

    val root = new DefaultMutableTreeNode("root")
    root.add(new DefaultMutableTreeNode("data1"))
    root.add(new DefaultMutableTreeNode("data2"))
    root.add(new DefaultMutableTreeNode("data3"))

    val model = new DefaultTreeModel(root)
    contents = new Tree(model)
  }
}

スクロール可能ツリー

ScrollPaneと組み合わせてスクロール可能にするには、Scrollable.Wrapperをミックスインする。

import scala.swing.Scrollable
class Tree(model: TreeModel) extends Component with Scrollable.Wrapper {
  override lazy val peer: JTree = new JTree(model) with SuperMixin
  protected def scrollablePeer = peer
}

スクロールありでTreeを表示する例:

import scala.swing.ScrollPane
object ShowTree extends SimpleSwingApplication {
  override def top = new MainFrame {
〜
    val model = new DefaultTreeModel(root)
    contents = new ScrollPane(new Tree(model))
  }
}

Scala Swingへ戻る / Scala目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま