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

イベントを扱う

あとでかく。