テーブル
2次元情報の表示
実世界の情報の保存には、2次元の表がもっともよく使われます
これをグラフィカルに表示するひとつの手段として、テーブルが用いられます
表計算ソフトや HTML における table タグなどを思い出してくれればよいでしょう
テーブルは javax.swing.JTable クラスで実装されています
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JTable
public class JTable extends JComponent
implements TableModelListener, Scrollable, TableColumnModelListener,
ListSelectionListener, CellEditorListener, Accessible
このクラスは次のようなコンストラクタを公開しています
public JTable()
public JTable(TableModel dm)
public JTable(TableModel dm , TableColumnModel cm)
public JTable(TableModel dm , TableColumnModel cm , ListSelectionModel sm)
public JTable(int numRows , int numColumns)
public JTable(Vector rowData , Vector columnNames)
public JTable(Object[][] rowData , Object[] columnNames)
dm にはテーブルのデータモデルを、にはテーブルの列モデル
sm にはテーブルの行選択モデルをそれぞれ指定します
numRows はテーブルの行数、columns には列数を指定します
rowData にはテーブルを初期化するデータを
columnNames には各列の名前を格納した Vector か Object の配列を指定します
モデルについては後ほど詳しく解説しますが
これまでのコンポーネントと同様に、これらはテーブル制御に使うインターフェイスです
Object の配列や Vector クラスを使うことで、テーブルを初期化することもできます
テーブルは、これらのオブジェクトの toString() を呼び出してそれを表示します
テーブルには、デフォルトで行と列を満たすだけのセルしか表示されませんが
スクロールペインに格納された場合、列ヘッダが描画されます
列ヘッダは、列名を表示します
import java.awt.*;
import javax.swing.*;
public class Test extends JApplet {
public void init() {
getContentPane().add(new JTable(5 , 5) , BorderLayout.NORTH);
String[][] data = {
{ "涼宮 遙" , "鏡 純夏" , } ,
{ "速瀬 水月" , "御剣 冥夜" } ,
{ "大空寺あゆ" , "綾峰 慧" }
};
String name[] = { "Tha forever that you wish" , "MUV_LUV" };
JTable table = new JTable(data , name);
getContentPane().add(new JScrollPane(table));
}
}
このプログラムの上部には、スクロールペインに属さないテーブルが
下部には、テーブルを保有するスクロールペインが表示されています
スクロールペインに属するテーブルは、見てわかるように列ヘッダが描画されます
さらに、列ヘッダはマウスでドラッグすることが可能で、列を入れ替えることができます
テーブルの値の制御は JTable.setValueAt() で設定し
JTable.getValueAt() メソッドで取得することができます
public void setValueAt(Object aValue , int row , int column)
public Object getValueAt(int row , int column)
aValue には設定する値を指定します
row には対象の行、column には列番号を指定します