JTable クラス

[内容]

  2 次元の表を作成するためのクラスです

[主な変数]

[コンストラクタ]

[主なメソッド]

[使用例]

  1. プログラム例は,JTable クラスの各メソッド等の使用例です.2 次元配列を使用して,JTable オブジェクトを生成しています.目標の欄は,平均が 3000 を超えると true になるようにしています.ここをクリックするとアプレット版が表示されます(プログラム).この方法による作成は簡単ですが,

    • イメージ等をセルに貼り付けても,その名前しか出力されない
    • 数字が右寄せにならない
    • すべてのセルが編集可能となってしまう
    • セルの値による再計算が面倒である( TableModelListener の tableChanged メソッドを利用してセルの値の変化を知ることはできますが,関連するセルの値の修正が面倒です.この例においては,セルの値の変更を Java コンソールにメッセージとして出力させているだけです)

    等の問題があります.

  2. プログラム例は,上と同じデータに対して,AbstractDataModel を使用して表を作成しています.目標の欄は,平均が 3000 を超えるとチェックが入るようにしています.図からも明らかなように,上で述べた欠点が改善されています.なお,この例では,数値を変更すると,平均,合計,及び,目標の欄も対応して変化します.ここをクリックするとアプレット版が表示されます(プログラム).

      なお,AbstractDataModel クラスは,抽象クラスであり,以下のようなメソッドを持っています.

    • public void fireTableCellUpdated(int row, int column)
      row 行 column 列のセルが変更されたことを,すべてのリスナーに通知する
    • public Class getColumnClass(int columnIndex)
      レンダラー(セルを描く)を使用するためには,実装する必要がある.実装しないと,上の例と同じ表示形式になってしまう.レンダラーは,各セルの値によって,以下のような表示方法をする.
        Boolean : チェックボックスを描く
        Number : 右寄せの数字
        ImageIcon : 中央にアイコン
        Object : オブジェクトのラベル(文字列)
    • public int getColumnCount()  ( TableModel から継承)
      列数を返すメソッドであり,必ず実装する必要がある
    • public String getColumnName(int column)
      列名を返すメソッドであり,実装しないと,列名がデフォルトの名前( A, B, ・・・ )になる
    • public int getRowCount()  ( TableModel から継承)
      行数を返すメソッドであり,必ず実装する必要がある
    • public Object getValueAt(int rowIndex, int columnIndex)  (TableModelから継承)
      セルの値を返すメソッドであり,必ず実装する必要がある
    • public boolean isCellEditable(int rowIndex, int columnIndex)
      セルが編集可能か否かを返す.実装しないと,すべてのセルが編集不可能になる.
    • public void setValueAt(Object aValue, int rowIndex, int columnIndex)
      セルの値を設定する.セルを編集しない場合は,実装する必要はない.

[参照]

JTree

ホームページ 目次 演習解答例目次 付録目次 索引