S-JIS[2011-10-16] 変更履歴
現時点の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
}
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
}
import scala.swing.ScrollPane
object ShowTree extends SimpleSwingApplication {
override def top = new MainFrame {
〜
val model = new DefaultTreeModel(root)
contents = new ScrollPane(new Tree(model))
}
}