テーブル


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 には列番号を指定します



前のページへ戻る次のページへ