scala.swing.Table
scala 標準の Table クラスの使い方メモ。バージョン 2.8 RC2 準拠。記事を執筆している現在では古いバージョンのドキュメントしか存在しませんが、下記を参考に。
http://www.scala-lang.org/docu/files/api/index.html
基本的な使い方
import scala.swing._ // 2.8 RC2 では SimpleGUIApplication ではなく SimpleSwingApplication を使用 object Sample extends SimpleSwingApplication { def top = new MainFrame { title = "適当なタイトル" contents = new Table } }
コンストラクタ
val cells = Array( Array("田村", "ゆかり", "17"), Array("水樹", "奈々", "17"), Array("井上", "喜久子", "17") ) val headers = Array("名字", "名前", "年齢") val table = new Table(cells.asInstanceOf[Array[Array[Any]]], headers.asInstanceOf[Array[Any]])
直接配列を渡して初期化する方法。この場合、配列の型が Any になっていないとコンパイルエラーになるので、必ずキャストしなければいけません。この方法の場合、値も自動的に入力されます。
val table = new Table(10, 10)
列数、行数を指定して初期化する方法。セルに値を入れる時は、以下のように行います。
table.update(3, 4, "ウホッ")
列と行を指定して、値を挿入。値に入れられる型は Any ですが、特別な指定をしない限り toString された値が入るような気がします。
縦横の幅の指定
テーブル自体の幅指定はこう。
import java.awt.Dimension // 引数は幅、高さ table.preferredViewportSize = new Dimension(640, 480)
セルの縦幅は以下のように。
table.rowHeight = 30
横幅は少々面倒ですが、以下のように。
table.peer.getColumnModel().getColumn(0).setMinWidth(120)
table.peer で、ラッピングしている JTable のインスタンスに直接アクセスできるようなので、そこからであれば他の JTable のメソッドも利用できます。
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JTable.html
イベントを扱う
あとでかく。