JTable クラス
[内容]
2 次元の表を作成するためのクラスです
[主な変数]
public static final int
AUTO_RESIZE_ALL_COLUMNS
すべてのサイズ変更操作で,各列を均等にサイズ変更する
public static final int
AUTO_RESIZE_LAST_COLUMN
すべてのサイズ変更操作で,最終列だけに調整を適用する
public static final int
AUTO_RESIZE_NEXT_COLUMN
列をUIで調整するときは,次の列を逆方向に調整する
public static final int
AUTO_RESIZE_OFF
列幅の調整は自動的に行わずに,スクロールバーを使う
public static final int
AUTO_RESIZE_SUBSEQUENT_COLUMNS
UIを調整するときは,それ以降の列を変更して列の合計幅を維持する(デフォルト)
[コンストラクタ]
public
JTable
(Object[][] rowData, Object[] columnNames)
2 次元配列 rowData の値を表示する JTable オブジェクトを生成する.各列の名前は,columnNames となる.
public
JTable
(TableModel dm)
データモデル dm,デフォルト列モデル,および,デフォルト選択モデルで初期化される JTable オブジェクトを生成する
[主なメソッド]
public JTableHeader
getTableHeader
()
テーブルヘッダを返す
public void
paint
(Graphics g) ( JComponent から継承)
コンポーネントを描画
public void
paintAll
(Graphics g) ( Component から継承)
このコンポーネントおよびそのすべてのサブコンポーネントを描画
public void
paintComponent
( Graphics g ) ( JComponent から継承)
コンポーネントを描画
public void
paintComponents
( Graphics g ) ( Container から継承)
コンテナ内の各コンポーネントを描画
public void
repaint
() ( Component から継承)
public void
repaint
(int x, int y, int width, int height) ( Component から継承)
public void
repaint
(long tm) ( Component から継承)
public void
repaint
(Rectangle r) ( JComponent から継承)
public void
repaint
(long tm, int x, int y, int width, int height) ( JComponent から継承)
指定された矩形領域を,tm ミリ秒以内に再描画する
public void
setAutoResizeMode
( int mode )
テーブルのサイズ変更時にテーブルの自動サイズ変更モードを設定する.引数は,AUTO_RESIZE_OFF,AUTO_RESIZE_NEXT_COLUMN,AUTO_RESIZE_SUBSEQUENT_COLUMNS,AUTO_RESIZE_LAST_COLUMN,または,AUTO_RESIZE_ALL_COLUMNS の中から選択する.
public void
setRowHeight
( int rowHeight )
public void
setRowHeight
( int row, int rowHeight )
すべて,または,指定された行の高さを設定する
public void
setRowMargin
( int rowMargin )
行間のマージンを設定する
public void
setShowHorizontalLines
( boolean showHorizontalLines )
セル間に水平線を描画するか否かを設定する
public void
setShowVerticalLines
( boolean showVerticalLines )
セル間に垂直線を描画するか否かを設定する
public void
setValueAt
( Object aValue, int row, int column )
セルの値を設定する
[使用例]
プログラム例
は,JTable クラスの各メソッド等の使用例です.2 次元配列を使用して,JTable オブジェクトを生成しています.目標の欄は,平均が 3000 を超えると true になるようにしています.
プログラム例
は,上と同じデータに対して,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
菅沼ホーム
本文目次
演習問題解答例
付録目次
索引