2008年7月18日金曜日

J2SE6のJTable

J2SE6で試すことがあって、触っていたのですが、JTableも結構変わっているみたい。

テーブルの印刷機能


print() というメソッドが増えています。
JScrollPaneに入っているJTableで全体が表示されていないとき(スクロールしないと全体が見えないとき)印刷って今までそぅ簡単にはできなかったんですが、これを使うと全体を印刷できるようになるみたい。


テーブルのソート機能


テーブルの列Headerをクリックするとテーブル内データをソートさせる・・・というのは、今まで自作を良くしていた部分ですが、これがJTableに標準実装されています。

JTableの標準実装をそのまま使いたいときには setAutoCreateRowSorter(true)ってしてあげるだけでOK!
Sorterを自分で実装して設定することもできます。

このソートを実装ですが、Modelのデータを実際にソートするのではなく、"見かけだけ" ソートしているようです。

そのため・・・
TableModelのsetValueAt((Object aValue, int row, int column)
を使うときには注意する必要があります。

今までも 『列』(Column) は "見かけだけ" 移動させることができたため、
"見かけ上での列位置" から "Model上の列位置" に変換するのに convertColumnIndexToModel(column) ってのを使っていたと思います。

これが、『行』に対しても必要になってきます。

convertRowIndexToModel(int)というメソッドが追加されていて、これを使ってModelの行位置に変換する必要があります。

今までのアプリ・・・修正しないといけないところが多いなぁ(涙)
• • •