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)) } }