|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.JTable
JTable は、2 次元テーブル形式でデータを提示するユーザインタフェースコンポーネントです。JTable は、その描画および編集をカスタマイズできるようにする多数の機能を備える一方で、こうした機能のデフォルトを提供して簡単なテーブルを容易に設定できるようにしています。たとえば、10 行 10 列から構成されるテーブルは次のように設定できます。
TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table);
JTable はカスタムモデルによる設定がよりいっそう簡単になったので、DefaultTableModel は旧リリースのようには役立ちません。アプリケーション内のデータを DefaultTableModel にコピーする代わりに、TableModel インタフェースの各メソッドでラップして、上記のように実際のデータを JTable に渡します。このテクニックは DefaultTableModel を使うのとほぼ同じ簡便さであり、この方法で始めると長期的にはかなりのメリットがあります。特に、これはスケーラブルなテクニックで、動的または編集可能なテーブルを簡単に扱うことができ、モデルがデータに最適な内部表現を自由に選択できることから、いっそう効果的なアプリケーションを作り出せます。
examples/demo 配下の「Table」ディレクトリには、データベースから取得するデータの編集可能ビューを提供するための方法や、特殊なレンダリングとエディタを使うために表示内の列を変更する方法などを含む JTable の使い方について数多くのサンプルが用意されています。たとえば、AbstractTableModel の getColumnClass()
メソッドをオーバーライドして指定の列の ImageIcon.class
の値を返すとアイコンを表示できるようになり、Number.class
の値を返すと列内で桁位置を右揃えにできます。
JTable は整数型を排他的に使って、それが表示するモデルの行と列をどちらとも参照します。JTable は単にタブ形式範囲のセルを取得して getValueAt(int, int)
を使い、モデルから適切な値を取り出して表示します。
getTableHeader().setReorderingAllowed(boolean)
を使って列の並べ替えを可能にすると、列は JTable で配列し直されて、ビューの列がモデル内の列とは異なる順番で表示されるようになります。これは、モデルの実装にまったく影響を与えません。列の並べ替えを行うときは、JTable は列の新しい順番を内部的に維持し、その列インデックスをモデルの照会前に変換します。
このため、TableModel を記述するときは、ビューで何が起こっているかにかかわらずモデルはそれ自身の座標系で照会されるので、列並べ替えイベントを待機する必要はありません。examples 配下には、列ではなく行の順番を変更するもう 1 つの座標系を挿入するための、このテクニックを利用した並べ替えアルゴリズムのサンプルが用意されています。
列モデルと行と列の両選択モデルを含め、JTable API と、それに関連付けられているすべてのクラスの API は、行と列の整数型インデックスを使うメソッドは常にビューの座標系を使うという一般原則に従います。この原則には、次の 3 つの例外があります。
convertColumnIndexToView() メソッドと convertColumnIndexToModel() メソッドは 2 つの座標系の間で変換を行うために提供されていますが、通常はあまり使いません。
すべての JComponent クラスと同様に、JComponent.registerKeyboardAction(java.awt.event.ActionListener, java.lang.String, javax.swing.KeyStroke, int)
を使って Action
オブジェクトを KeyStroke
に関連付け、指定の条件でアクションを実行できます。
詳細は、「The Java Tutorial」の「How to Use Tables」を参照してください。
標準の Look & Feel (L&F) 表現でこのコンポーネントが使用するキーボードのキーについては、JTable のキーの割り当てを参照してください。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。
内部クラスの概要 | |
protected class |
JTable.AccessibleJTable
オブジェクトのユーザ補助機能を取得するために使用するクラスです。 |
クラス javax.swing.JComponent から継承した内部クラス |
JComponent.AccessibleJComponent |
フィールドの概要 | |
static int |
AUTO_RESIZE_ALL_COLUMNS
すべてのサイズ変更操作で、各列を均等にサイズ変更します。 |
static int |
AUTO_RESIZE_LAST_COLUMN
すべてのサイズ変更操作で、最終列だけに調整を適用します。 |
static int |
AUTO_RESIZE_NEXT_COLUMN
列を UI で調整するときは、次の列を逆方向に調整します。 |
static int |
AUTO_RESIZE_OFF
列幅の調整は自動的に行わずに、スクロールバーを使います。 |
static int |
AUTO_RESIZE_SUBSEQUENT_COLUMNS
UI を調整するときは、それ以降の列を変更して列の合計幅を維持します。 |
protected boolean |
autoCreateColumnsFromModel
true の場合、列のデフォルトセットを構築するように TableModel に照会します。 |
protected int |
autoResizeMode
このモード値は、テーブルが幅のサイズを自動変更して各列でテーブル幅全体を占めるようにするかどうかと、サイズ変更のやり方を指定します。 |
protected TableCellEditor |
cellEditor
現在のセルが占める画面上の場所を上書きし、ユーザがその内容を変更できるようにするオブジェクトです。 |
protected boolean |
cellSelectionEnabled
true の場合、行選択と列選択はどちらも同時に空でないことが可能で、選択されているセルはその行と列がどちらも選択されているものになります。 |
protected TableColumnModel |
columnModel
テーブルの TableColumnModel です。 |
protected TableModel |
dataModel
テーブルの TableModel です。 |
protected Hashtable |
defaultEditorsByColumnClass
クラス別インデックス付きの、セルの内容を表示および編集するオブジェクトのテーブルです。 |
protected Hashtable |
defaultRenderersByColumnClass
クラス別インデックス付きの、セルの内容を表示するオブジェクトのテーブルです。 |
protected int |
editingColumn
編集中のセルの列を識別します。 |
protected int |
editingRow
編集中のセルの行を識別します。 |
protected Component |
editorComp
編集時であれば、編集を処理している Component です。 |
protected Color |
gridColor
グリッドの色です。 |
protected Dimension |
preferredViewportSize
Scrollable インタフェースによって使われ、可視領域の初期設定を行います。 |
protected int |
rowHeight
テーブル内の全行の高さです。 |
protected int |
rowMargin
行間の高さマージンです。 |
protected boolean |
rowSelectionAllowed
許可されている行選択です。 |
protected Color |
selectionBackground
選択されたセルのバックグラウンドカラーです。 |
protected Color |
selectionForeground
選択されたセルのフォアグラウンドカラーです。 |
protected ListSelectionModel |
selectionModel
行選択を追跡するのに使う、テーブルの ListSelectionModel です。 |
protected boolean |
showHorizontalLines
showHorizontalLines が true の場合、テーブルはセル間に水平線を描画します。 |
protected boolean |
showVerticalLines
showVerticalLines が true の場合、テーブルはセル間に垂直線を描画します。 |
protected JTableHeader |
tableHeader
テーブルの TableHeader です。 |
クラス javax.swing.JComponent から継承したフィールド |
accessibleContext,
listenerList,
TOOL_TIP_TEXT_KEY,
ui,
UNDEFINED_CONDITION,
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
WHEN_FOCUSED,
WHEN_IN_FOCUSED_WINDOW |
クラス java.awt.Component から継承したフィールド |
BOTTOM_ALIGNMENT,
CENTER_ALIGNMENT,
LEFT_ALIGNMENT,
RIGHT_ALIGNMENT,
TOP_ALIGNMENT |
コンストラクタの概要 | |
JTable()
デフォルトデータモデル、デフォルト列モデル、およびデフォルト選択モデルで初期化される、デフォルトの JTable を構築します。 |
|
JTable(int numRows,
int numColumns)
DefaultTableModel を使って、空のセルの numRows と numColumns で JTable を構築します。 |
|
JTable(Object[][] rowData,
Object[] columnNames)
2 次元配列 rowData の値を表示する JTable を、列名 columnNames で構築します。 |
|
JTable(TableModel dm)
データモデル dm、デフォルト列モデル、およびデフォルト選択モデルで初期化される JTable を構築します。 |
|
JTable(TableModel dm,
TableColumnModel cm)
データモデル dm、列モデル cm、およびデフォルトの選択モデルで初期化される JTable を構築します。 |
|
JTable(TableModel dm,
TableColumnModel cm,
ListSelectionModel sm)
データモデル dm、列モデル cm、および選択モデル sm で初期化される JTable を構築します。 |
|
JTable(Vector rowData,
Vector columnNames)
ベクトルの Vector rowData の値を表示する JTable を、列名 columnNames で構築します。 |
メソッドの概要 | |
void |
addColumn(TableColumn aColumn)
JTable の列モデルが保持する列の配列の末尾に aColumn を追加します。 |
void |
addColumnSelectionInterval(int index0,
int index1)
index0 から index1 までの列 (上下限値を含む) を現在の選択領域に追加します。 |
void |
addNotify()
configureEnclosingScrollPane を呼び出します。 |
void |
addRowSelectionInterval(int index0,
int index1)
index0 から index1 までの行 (上下限値を含む) を現在の選択領域に追加します。 |
void |
clearSelection()
選択されているすべての列および行を選択解除します。 |
void |
columnAdded(TableColumnModelEvent e)
列がモデルに追加されたことをリスナーに通知します。 |
int |
columnAtPoint(Point point)
point が存在する場合はその列のインデックス、point がレシーバの境界外にある場合は -1 を返します。 |
void |
columnMarginChanged(ChangeEvent e)
列がマージン変更のために移動されたことをリスナーに通知します。 |
void |
columnMoved(TableColumnModelEvent e)
列が再配置されたことをリスナーに通知します。 |
void |
columnRemoved(TableColumnModelEvent e)
列がモデルから削除されたことをリスナーに通知します。 |
void |
columnSelectionChanged(ListSelectionEvent e)
TableColumnModel の選択モデルが変更されたことをリスナーに通知します。 |
protected void |
configureEnclosingScrollPane()
JTable が囲み側 JScrollPane の viewportView の場合 (一般的な状況)、特にテーブルのテーブルヘッダをスクロール区画の columnHeaderView としてインストールすることによって、ScrollPane の設定を行います。 |
int |
convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex 列でデータが表示中のモデル内の列のインデックスを返します。 |
int |
convertColumnIndexToView(int modelColumnIndex)
モデル内の modelColumnIndex 列からデータを表示しているビュー内の列のインデックスを返します。 |
protected TableColumnModel |
createDefaultColumnModel()
DefaultTableColumnModel であるデフォルトの列モデルオブジェクトを返します。 |
void |
createDefaultColumnsFromModel()
このメソッドは TableModel インタフェースで定義された getColumnCount() メソッドと getColumnClass() メソッドを使って、データモデルからテーブルのデフォルトの列を作成します。 |
protected TableModel |
createDefaultDataModel()
DefaultTableModel であるデフォルトのテーブルモデルオブジェクトを返します。 |
protected void |
createDefaultEditors()
Object、数、boolean 値のデフォルトのセルエディタを作成します。 |
protected void |
createDefaultRenderers()
|
protected ListSelectionModel |
createDefaultSelectionModel()
DefaultListSelectionModel であるデフォルトの選択モデルオブジェクトを返します。 |
protected JTableHeader |
createDefaultTableHeader()
JTableHeader であるデフォルトのテーブルヘッダオブジェクトを返します。 |
static JScrollPane |
createScrollPaneForTable(JTable aTable)
推奨されません。 Swing バージョン 1.0.2 で new JScrollPane(aTable) に置き換えられました。 |
boolean |
editCellAt(int row,
int column)
row、column に位置するセルが編集可能な場合は、編集をプログラムに基づいて開始します。 |
boolean |
editCellAt(int row,
int column,
EventObject e)
row、column に位置するセルが編集可能な場合は、編集をプログラムに基づいて開始します。 |
void |
editingCanceled(ChangeEvent e)
編集が取り消されると呼び出されます。 |
void |
editingStopped(ChangeEvent e)
編集が完了したときに呼び出されます。 |
AccessibleContext |
getAccessibleContext()
この JComponent に関連付けられている AccessibleContext を取得します。 |
boolean |
getAutoCreateColumnsFromModel()
テーブルがデフォルトの列をモデルから作成するかどうかを返します。 |
int |
getAutoResizeMode()
テーブルの自動サイズ変更モードを返します。 |
TableCellEditor |
getCellEditor()
cellEditor を返します。 |
TableCellEditor |
getCellEditor(int row,
int column)
この行と列が指定するセルの適切なエディタを返します。 |
Rectangle |
getCellRect(int row,
int column,
boolean includeSpacing)
row と column が交差する位置のセルを示す矩形を返します。 |
TableCellRenderer |
getCellRenderer(int row,
int column)
この行と列で指定するセルの適切なレンダリングを返します。 |
boolean |
getCellSelectionEnabled()
行と列の同時選択を許可する場合に true を返します。 |
TableColumn |
getColumn(Object identifier)
equals() を使って比較し、識別子が identifier に等しいテーブル内の列の TableColumn オブジェクトを返します。 |
Class |
getColumnClass(int column)
指定されたビュー位置の列の型を返します。 |
int |
getColumnCount()
列モデル内の列数を返します。 |
TableColumnModel |
getColumnModel()
このテーブルのすべての列情報を保持する TableColumnModel を返します。 |
String |
getColumnName(int column)
指定されたビュー位置の列の名前を返します。 |
boolean |
getColumnSelectionAllowed()
列を選択できる場合に true を返します。 |
TableCellEditor |
getDefaultEditor(Class columnClass)
TableColumn に設定済みのものがない場合に使うエディタを返します。 |
TableCellRenderer |
getDefaultRenderer(Class columnClass)
TableColumn に設定済みのものがない場合に使うレンダリングを返します。 |
int |
getEditingColumn()
編集中の列のインデックスを返します。 |
int |
getEditingRow()
編集中の行のインデックスを返します。 |
Component |
getEditorComponent()
レシーバが現在編集中である場合は、CellEditor から返された Component を返します。 |
Color |
getGridColor()
グリッド線を描画するのに使う色を返します。 |
Dimension |
getIntercellSpacing()
セル間の水平間隔と垂直間隔を返します。 |
TableModel |
getModel()
レシーバが表示するデータを提供する TableModel を返します。 |
Dimension |
getPreferredScrollableViewportSize()
このテーブルのビューポートの望ましいサイズを返します。 |
int |
getRowCount()
テーブル内の行数を返します。 |
int |
getRowHeight()
レシーバのテーブル行の高さを返します。 |
int |
getRowMargin()
行間の空きスペース量を取得します。 |
boolean |
getRowSelectionAllowed()
行を選択できる場合に true を返します。 |
int |
getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
テーブルの方向に基づいて visibleRect.height または visibleRect.width を返します。 |
boolean |
getScrollableTracksViewportHeight()
false を返して、ビューポートの高さがテーブルの高さを決定しないことを示します。 |
boolean |
getScrollableTracksViewportWidth()
false を返して、ビューポートの幅がテーブルの幅を決定しないことを示します。 |
int |
getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
新しい 1 行または 1 列を完全に表示するスクロール増分値を (方向に基づいて) 返します。 |
int |
getSelectedColumn()
選択された最後の列または選択領域に追加した最後の列のインデックスを返します。 |
int |
getSelectedColumnCount()
選択された列数を返します。 |
int[] |
getSelectedColumns()
選択されたすべての列のインデックスを返します。 |
int |
getSelectedRow()
選択された最後の行または選択領域に追加した最後の行のインデックスを返します。 |
int |
getSelectedRowCount()
選択された行数を返します。 |
int[] |
getSelectedRows()
選択されたすべての行のインデックスを返します。 |
Color |
getSelectionBackground()
選択されたセルのバックグラウンドカラーを返します。 |
Color |
getSelectionForeground()
選択されているセルのフォアグラウンドカラーを返します。 |
ListSelectionModel |
getSelectionModel()
行選択状態を維持するのに使う ListSelectionModel を返します。 |
boolean |
getShowHorizontalLines()
レシーバがセル間に水平線を描画する場合は true、描画しない場合は false を返します。 |
boolean |
getShowVerticalLines()
レシーバがセル間に垂直線を描画する場合は true、描画しない場合は false を返します。 |
JTableHeader |
getTableHeader()
JTable のテーブルヘッダを返します。 |
String |
getToolTipText(MouseEvent event)
JComponent の setToolTipText メソッドをオーバーライドして、(レンダリングがテキストを設定している場合は) レンダリングのヒントを使えるようにします。 |
TableUI |
getUI()
このコンポーネントを描画する L&F オブジェクトを返します。 |
String |
getUIClassID()
このコンポーネントを描画する L&F クラスの名前を返します。 |
Object |
getValueAt(int row,
int column)
row、column に位置するセル値を返します。 |
protected void |
initializeLocalVars()
各テーブルプロパティをデフォルト値に初期化します。 |
boolean |
isCellEditable(int row,
int column)
row、column に位置するセルが編集可能な場合に true を返します。 |
boolean |
isCellSelected(int row,
int column)
指定された位置のセルが選択されている場合に true を返します。 |
boolean |
isColumnSelected(int column)
指定されたインデックスの列が選択されている場合に true を返します。 |
boolean |
isEditing()
テーブルがセルを編集中である場合は true を返します。 |
boolean |
isManagingFocus()
JComponent の実装では、このメソッドは false を返すので、true を返すようにこのメソッドをオーバーライドします。 |
boolean |
isRowSelected(int row)
指定されたインデックスの行が選択されている場合に true を返します。 |
void |
moveColumn(int column,
int targetColumn)
column の列を targetColumn の列が現在占める位置に移動します。 |
protected String |
paramString()
この JTable の文字列表現を返します。 |
Component |
prepareEditor(TableCellEditor editor,
int row,
int column)
指定されたセルの値を使って、指定されたエディタを準備します。 |
Component |
prepareRenderer(TableCellRenderer renderer,
int row,
int column)
dataModel からの適切な値と、選択モデルからの適切な選択値で、指定されたレンダリングを準備します。 |
void |
removeColumn(TableColumn aColumn)
aColumn を JTable の列配列から削除します。 |
void |
removeColumnSelectionInterval(int index0,
int index1)
index0 から index1 までの列 (上下限値を含む) を選択解除します。 |
void |
removeEditor()
エディタオブジェクトを破棄して、そのオブジェクトがセル描画に使った場所を返します。 |
void |
removeRowSelectionInterval(int index0,
int index1)
index0 から index1 までの行 (上下限値を含む) を選択解除します。 |
void |
reshape(int x,
int y,
int width,
int height)
super.reshape() を呼び出し、単に境界での変更を検出するためにオーバーライドされます。 |
protected void |
resizeAndRepaint()
revalidate() のあとに repaint() を呼び出すのと同等です。 |
int |
rowAtPoint(Point point)
point が存在する場合はその行のインデックス、point が [0, getRowCount()-1] の範囲内にない場合は -1 を返します。 |
void |
selectAll()
テーブルのすべての行、列、およびセルを選択します。 |
void |
setAutoCreateColumnsFromModel(boolean createColumns)
テーブルの autoCreateColumnsFromModel フラグを設定します。 |
void |
setAutoResizeMode(int mode)
テーブルのサイズ変更時にテーブルの自動サイズ変更モードを設定します。 |
void |
setCellEditor(TableCellEditor anEditor)
cellEditor 変数を設定します。 |
void |
setCellSelectionEnabled(boolean flag)
このテーブルで列選択と行選択を同時に存在できるようにするかどうかを設定します。 |
void |
setColumnModel(TableColumnModel newModel)
このテーブルの列モデルを newModel に設定し、新しい列モデルからのリスナー通知として登録します。 |
void |
setColumnSelectionAllowed(boolean flag)
このモデルの列を選択できるかどうかを設定します。 |
void |
setColumnSelectionInterval(int index0,
int index1)
index0 から index1 までの列 (上下限値を含む) を選択します。 |
void |
setDefaultEditor(Class columnClass,
TableCellEditor editor)
TableColumn に設定済みのものがない場合に使うデフォルトのエディタを設定します。 |
void |
setDefaultRenderer(Class columnClass,
TableCellRenderer renderer)
TableColumn に設定済みのものがない場合に使うデフォルトのレンダリングを設定します。 |
void |
setEditingColumn(int aColumn)
editingColumn 変数を設定します。 |
void |
setEditingRow(int aRow)
editingRow 変数を設定します。 |
void |
setGridColor(Color newColor)
グリッド線を描画するのに使う色を newcolor に設定し、レシーバを再表示します。 |
void |
setIntercellSpacing(Dimension newSpacing)
セル間の幅と高さを newSpacing に設定し、レシーバを再表示します。 |
void |
setModel(TableModel newModel)
このテーブルのデータモデルを newModel に設定し、新しいデータモデルからのリスナー通知として登録します。 |
void |
setPreferredScrollableViewportSize(Dimension size)
このテーブルのビューポートの望ましいサイズを設定します。 |
void |
setRowHeight(int newHeight)
行の高さを newRowHeight に設定し、tile を呼び出します。 |
void |
setRowMargin(int rowMargin)
行間の空きスペース量を設定します。 |
void |
setRowSelectionAllowed(boolean flag)
このモデルの行を選択できるかどうかを設定します。 |
void |
setRowSelectionInterval(int index0,
int index1)
index0 から index1 までの行 (上下限値を含む) を選択します。 |
void |
setSelectionBackground(Color selectionBackground)
選択されたセルのバックグラウンドカラーを設定します。 |
void |
setSelectionForeground(Color selectionForeground)
選択されたセルのフォアグラウンドカラーを設定します。 |
void |
setSelectionMode(int selectionMode)
テーブルの選択モードを設定すると、単一項目選択、連続区間の選択、または連続区間の複数選択を可能にできます。 |
void |
setSelectionModel(ListSelectionModel newModel)
このテーブルの行選択モデルを newModel に設定し、新しい選択モデルからのリスナー通知として登録します。 |
void |
setShowGrid(boolean b)
レシーバがセルの周囲にグリッド線を描画するかどうかを設定します。 |
void |
setShowHorizontalLines(boolean b)
レシーバがセル間に水平線を描画するかどうかを設定します。 |
void |
setShowVerticalLines(boolean b)
レシーバがセル間に垂直線を描画するかどうかを設定します。 |
void |
setTableHeader(JTableHeader newHeader)
JTable のテーブルヘッダを newHeader に設定します。 |
void |
setUI(TableUI ui)
このコンポーネントを描画する L&F オブジェクトを設定します。 |
void |
setValueAt(Object aValue,
int row,
int column)
row、column に位置するセルの値を設定します。 |
void |
sizeColumnsToFit(boolean lastColumnOnly)
推奨されません。 Swing バージョン 1.0.3 で sizeColumnsToFit(int) に置き換えられました。 |
void |
sizeColumnsToFit(int resizingColumn)
このメソッドはテーブル内の 1 つまたは複数の列のサイズ変更を行うので、JTable のすべての列の合計幅はテーブル幅に等しくなります。 |
void |
tableChanged(TableModelEvent e)
TableModelEvent はモデルの座標系で構築され、JTable がビュー座標系への適切なマッピングをイベント受信時に実行します。 |
void |
updateUI()
L&F が変更されたことを示す UIManager からの通知です。 |
void |
valueChanged(ListSelectionEvent e)
選択領域が変更されたときに呼び出されて、新しい選択領域を再ペイントします。 |
クラス java.lang.Object から継承したメソッド |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
フィールドの詳細 |
public static final int AUTO_RESIZE_OFF
public static final int AUTO_RESIZE_NEXT_COLUMN
public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS
public static final int AUTO_RESIZE_LAST_COLUMN
public static final int AUTO_RESIZE_ALL_COLUMNS
protected TableModel dataModel
protected TableColumnModel columnModel
protected ListSelectionModel selectionModel
protected JTableHeader tableHeader
protected int rowHeight
protected int rowMargin
protected Color gridColor
protected boolean showHorizontalLines
protected boolean showVerticalLines
protected int autoResizeMode
protected boolean autoCreateColumnsFromModel
protected Dimension preferredViewportSize
protected boolean rowSelectionAllowed
protected boolean cellSelectionEnabled
protected transient Component editorComp
protected transient TableCellEditor cellEditor
protected transient int editingColumn
protected transient int editingRow
protected transient Hashtable defaultRenderersByColumnClass
protected transient Hashtable defaultEditorsByColumnClass
protected Color selectionForeground
protected Color selectionBackground
コンストラクタの詳細 |
public JTable()
createDefaultDataModel()
,
createDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(TableModel dm)
dm
- テーブルのデータモデルcreateDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(TableModel dm, TableColumnModel cm)
dm
- テーブルのデータモデルcm
- テーブルの列モデルcreateDefaultSelectionModel()
public JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
dm
- テーブルのデータモデルcm
- テーブルの列モデルsm
- テーブルの行選択モデルcreateDefaultDataModel()
,
createDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(int numRows, int numColumns)
numRows
- テーブルが保持する行数numColumns
- テーブルが保持する列数DefaultTableModel
public JTable(Vector rowData, Vector columnNames)
((Vector)rowData.elementAt(1)).elementAt(5);
すべての行は、columnNames と同じ長さでなければなりません。
rowData
- 新しいテーブルのデータcolumnNames
- 各列の名前public JTable(Object[][] rowData, Object[] columnNames)
rowData[1][5];
すべての行は、columnNames と同じ長さでなければなりません。
rowData
- 新しいテーブルのデータcolumnNames
- 各列の名前メソッドの詳細 |
public void addNotify()
configureEnclosingScrollPane
を呼び出します。configureEnclosingScrollPane()
protected void configureEnclosingScrollPane()
new JScrollPane(myTable)
を使って通常の方法で JTable を JScrollPane に追加すると、(テーブルがビューポートに追加されるときに) addNotify
が JTable で呼び出されます。次に JTable の addNotify
メソッドが、デフォルトインストールプロシージャをサブクラスによってオーバーライドできるように保護されているこのメソッドを呼び出します。addNotify()
public static JScrollPane createScrollPaneForTable(JTable aTable)
new JScrollPane(aTable)
に置き換えられました。new JScrollPane(aTable)
と同等です。public void setTableHeader(JTableHeader newHeader)
newHeader
- 新しいテーブルヘッダgetTableHeader()
public JTableHeader getTableHeader()
setTableHeader(javax.swing.table.JTableHeader)
public void setRowHeight(int newHeight)
newRowHeight
- 新しい行の高さgetRowHeight()
public int getRowHeight()
setRowHeight(int)
public void setRowMargin(int rowMargin)
getRowMargin()
public int getRowMargin()
getIntercellSpacing().height
と同等です。setRowMargin(int)
public void setIntercellSpacing(Dimension newSpacing)
newSpacing
- 新しい幅と高さである、セルの間隔getIntercellSpacing()
public Dimension getIntercellSpacing()
setIntercellSpacing(java.awt.Dimension)
public void setGridColor(Color newColor)
newcolor
- グリッドの新しい色getGridColor()
public Color getGridColor()
setGridColor(java.awt.Color)
public void setShowGrid(boolean b)
b
- テーブルビューがグリッド線を描画する場合は truesetShowVerticalLines(boolean)
,
setShowHorizontalLines(boolean)
public void setShowHorizontalLines(boolean b)
b
- テーブルビューが水平線を描画する場合は truegetShowHorizontalLines()
,
setShowGrid(boolean)
,
setShowVerticalLines(boolean)
public void setShowVerticalLines(boolean b)
b
- テーブルビューが垂直線を描画する場合は truegetShowVerticalLines()
,
setShowGrid(boolean)
,
setShowHorizontalLines(boolean)
public boolean getShowHorizontalLines()
setShowHorizontalLines(boolean)
public boolean getShowVerticalLines()
setShowVerticalLines(boolean)
public void setAutoResizeMode(int mode)
mode
- 次の 5 つの有効値の 1 つ:
AUTO_RESIZE_OFF,
AUTO_RESIZE_NEXT_COLUMN,
AUTO_RESIZE_SUBSEQUENT_COLUMNS,
AUTO_RESIZE_LAST_COLUMN,
AUTO_RESIZE_ALL_COLUMNSgetAutoResizeMode()
,
sizeColumnsToFit(int)
public int getAutoResizeMode()
setAutoResizeMode(int)
,
sizeColumnsToFit(int)
public void setAutoCreateColumnsFromModel(boolean createColumns)
createColumns
- JTable が列を自動作成する場合は truegetAutoCreateColumnsFromModel()
,
createDefaultColumnsFromModel()
public boolean getAutoCreateColumnsFromModel()
setAutoCreateColumnsFromModel(boolean)
,
createDefaultColumnsFromModel()
public void createDefaultColumnsFromModel()
このメソッドは、モデルからの情報に基づいて新しい列を作成する前に、既存の列があればそれをクリアします。
getAutoCreateColumnsFromModel()
public void setDefaultRenderer(Class columnClass, TableCellRenderer renderer)
getDefaultRenderer(java.lang.Class)
,
setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor)
public TableCellRenderer getDefaultRenderer(Class columnClass)
setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)
,
getColumnClass(int)
public void setDefaultEditor(Class columnClass, TableCellEditor editor)
TableModel.isCellEditable(int, int)
,
getDefaultEditor(java.lang.Class)
,
setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)
public TableCellEditor getDefaultEditor(Class columnClass)
setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor)
,
getColumnClass(int)
public void setSelectionMode(int selectionMode)
JTable の行選択モデルと列選択モデルはどちらともデフォルトで DefaultListSelectionModel を使うので、JTable は JList と同じように動作します。モードの詳細は、JList の setSelectionMode() を参照してください。
JList.setSelectionMode(int)
public void setRowSelectionAllowed(boolean flag)
getRowSelectionAllowed()
public boolean getRowSelectionAllowed()
setRowSelectionAllowed(boolean)
public void setColumnSelectionAllowed(boolean flag)
getColumnSelectionAllowed()
public boolean getColumnSelectionAllowed()
setColumnSelectionAllowed(boolean)
public void setCellSelectionEnabled(boolean flag)
getCellSelectionEnabled()
public boolean getCellSelectionEnabled()
setCellSelectionEnabled(boolean)
public void selectAll()
public void clearSelection()
public void setRowSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public void setColumnSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public void addRowSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public void addColumnSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public void removeRowSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public void removeColumnSelectionInterval(int index0, int index1)
index0
- 区間の始端index1
- 区間の終端public int getSelectedRow()
getSelectedRows()
public int getSelectedColumn()
getSelectedColumns()
public int[] getSelectedRows()
getSelectedRow()
public int[] getSelectedColumns()
getSelectedColumn()
public int getSelectedRowCount()
public int getSelectedColumnCount()
public boolean isRowSelected(int row)
public boolean isColumnSelected(int column)
public boolean isCellSelected(int row, int column)
public Color getSelectionForeground()
setSelectionForeground(java.awt.Color)
,
setSelectionBackground(java.awt.Color)
public void setSelectionForeground(Color selectionForeground)
このプロパティのデフォルト値は、Look & Feel の実装によって定義されます。
JavaBeans バウンドプロパティです。
selectionForeground
- 選択されたリスト項目のフォアグラウンドで使う ColorgetSelectionForeground()
,
setSelectionBackground(java.awt.Color)
,
JComponent.setForeground(java.awt.Color)
,
JComponent.setBackground(java.awt.Color)
,
JComponent.setFont(java.awt.Font)
public Color getSelectionBackground()
setSelectionBackground(java.awt.Color)
,
setSelectionForeground(java.awt.Color)
public void setSelectionBackground(Color selectionBackground)
このプロパティのデフォルト値は、Look & Feel の実装によって定義されます。
JavaBeans バウンドプロパティです。
selectionBackground
- 選択されたセルのバックグラウンドで使う ColorgetSelectionBackground()
,
setSelectionForeground(java.awt.Color)
,
JComponent.setForeground(java.awt.Color)
,
JComponent.setBackground(java.awt.Color)
,
JComponent.setFont(java.awt.Font)
public TableColumn getColumn(Object identifier)
identifier
- 識別子オブジェクトpublic int convertColumnIndexToModel(int viewColumnIndex)
convertColumnIndexToView(int)
public int convertColumnIndexToView(int modelColumnIndex)
convertColumnIndexToModel(int)
public int getRowCount()
getColumnCount()
public int getColumnCount()
getRowCount()
public String getColumnName(int column)
public Class getColumnClass(int column)
public Object getValueAt(int row, int column)
注: 列はテーブルビューの表示順で指定され、TableModel の列順では指定されません。これは重要な相違ですが、ユーザがテーブル内の列を配列し直すと column 2 の内容が変更されるためです。一方、ユーザのアクションはモデルの列順序付けに影響を及ぼしません。
row
- ルックアップ対象の値を持つ行column
- ルックアップ対象の値を持つ列public void setValueAt(Object aValue, int row, int column)
aValue
- 新しい値row
- 変更対象の値を持つ行column
- 変更対象の値を持つ列getValueAt(int, int)
public boolean isCellEditable(int row, int column)
row
- ルックアップ対象の値を持つ行column
- ルックアップ対象の値を持つ列setValueAt(java.lang.Object, int, int)
public void addColumn(TableColumn aColumn)
getModel().getColumnName()
の返す名前に設定します。
JTable に列を追加すると、指定された width、使用可能な cellRenderer と cellEditor を使って、モデル内の modelColumn 番目の列のデータを表示できます。
addColumn(new TableColumn(modelColumn, width, cellRenderer, cellEditor));[TableColumn 内のその他のすべてのコンストラクタを代わりに使用することができます。] モデル列は TableColumn 内に格納され、モデル内の適切なデータ値を見つけるために描画時と編集時に使用されます。モデル列は、列をビュー内で並べ替えるときにも変更されません。
aColumn
- 追加する TableColumnremoveColumn(javax.swing.table.TableColumn)
public void removeColumn(TableColumn aColumn)
aColumn
- 削除する TableColumnaddColumn(javax.swing.table.TableColumn)
public void moveColumn(int column, int targetColumn)
column
- 移動する列のインデックスtargetColumn
- 列の新しいインデックスpublic int columnAtPoint(Point point)
rowAtPoint(java.awt.Point)
public int rowAtPoint(Point point)
columnAtPoint(java.awt.Point)
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
row
- 計算する行column
- 計算する列includeSpacing
- true の場合、返される矩形は適切なセルの間隔を含むpublic void reshape(int x, int y, int width, int height)
sizeColumnsToFit(int)
public void sizeColumnsToFit(boolean lastColumnOnly)
sizeColumnsToFit(int)
に置き換えられました。sizeColumnsToFit(int)
public void sizeColumnsToFit(int resizingColumn)
JTable で setBounds() が呼び出されると (通常は囲み側ウィンドウのサイズが変更されたとき)、 resizingColumn
に -1 を設定してこのメソッドが呼び出されます。これは、サイズ変更が JTable の「外側」で起きたこと、および変更 (デルタ) が JTable の autoResizeMode モードに関係なくすべての列に配分されることを意味します。
resizingColumn
が -1 でない場合は、テーブルサイズの変更ではなく、テーブル内のある列のサイズが変更されたことを示します。この場合、自動サイズ変更モードは、余分な (または足りない) スペースを利用可能なすべての列で配分する方法を決定します。
次に、各モードを示します。
注: JTable が列幅に調整を施すときは、最小値と最大値を絶対的に尊重します。このため、このメソッドを呼び出したあとでも、すべての列の合計幅はテーブル幅に等しくありません。こうなると、JTable はそれ自身で AUTO_RESIZE_OFF モードに入って ScrollBar を呼び出したり、現在の自動サイズ変更モードによるその他の機能を中断させたりすることはありません。その代わり、境界を各列の最小または最大の合計よりも大きく (または小さく) 設定できるようにします。つまり、すべての列を表示する余裕がないか、すべての列が JTable の境界に足りないかのどれかを意味します。結局、前者は一部の列のクリッピングを実行し、後者はペイント時に JTable のバックグラウンドカラーで領域をペイントすることになります。
有効な列の間でデルタを分散させる機構は、JTable クラスの private メソッドで提供されます。
adjustSizes(long targetSize, final Resizable3 r, boolean inverse)次にこのメソッドについて説明します。Resizable3 は private インタフェースであり、このインタフェースによって、size、preferredSize、maximumSize、および minimumSize を持つ要素の集合を格納するすべてのデータ構造がアルゴリズムによってその要素を操作できるようになります。
targetSize と、r 内のすべての要素の適切なサイズの合計との差を「DELTA」とします。各サイズは、元の適切なサイズのそれぞれに DELTA の割り当て分を足して算出します。各割り当て分は、適切なサイズとその制限境界 (最小値または最大値) との間の距離に基づいて決まります。
各定数を min[i]、max[i]、および pref[i] とします。
それぞれの合計を MIN、MAX、および PREF とします。
新しいサイズの計算方法は次のとおりです。
size[i] = pref[i] + delta[i]delta[i] の計算方法は次のとおりです。
(DELTA < 0) の場合は、次のような縮小モードになります。
DELTA delta[i] = ------------ * (pref[i] - min[i]) (PREF - MIN)(DELTA > 0) の場合は、次のような拡大モードになります。
DELTA delta[i] = ------------ * (max[i] - pref[i]) (MAX - PREF)
全体として、合計サイズは同じ割合 k で合計最小値または合計最大値に近づき、その割合が必要なスペース DELTA に収まることを保証します。
ここで提示した公式の単純な評価は、有限精度 (int を使用) でこの処理をすることによって生じる丸め誤差に影響を受けます。これに対応するために、前述の乗率が繰り返し計算され、そのときに前回の丸め誤差が考慮されます。その結果、指定されたすべての要素で均等に丸め誤差を分散することによって、値の合計が正確に targetSize
になる一連の整数を生成するアルゴリズムとなります。
targetSize
が [MIN, MAX] の範囲外の場合、このアルゴリズムによってすべてのサイズがそれぞれの適切な制限値 (最大値または最小値) に設定されます。
resizingColumn
- サイズ変更でこの調整を必要とする列。そのような列がない場合は -1TableColumn.setWidth(int)
public String getToolTipText(MouseEvent event)
注: JTable がレンダリングのツールヒントを適切に表示できるようにするには、JTable は ToolTipManager に登録済みのコンポーネントでなければなりません。これは initializeLocalVars() で自動的に行われますが、あとで JTable に setToolTipText(null) を通知すると、テーブルコンポーネントを登録解除するので、レンダリングからのヒントはそれ以上表示されません。
JComponent.getToolTipText()
public boolean editCellAt(int row, int column)
row
- 編集する行column
- 編集する列public boolean editCellAt(int row, int column, EventObject e)
row
- 編集する行column
- 編集する列e
- shouldSelectCell に渡されるイベントpublic boolean isEditing()
editingColumn
,
editingRow
public Component getEditorComponent()
public int getEditingColumn()
editingRow
public int getEditingRow()
editingColumn
public TableUI getUI()
public void setUI(TableUI ui)
ui
- TableUI L&F オブジェクトUIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
JComponent.updateUI()
public String getUIClassID()
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void setModel(TableModel newModel)
newModel
- このテーブルの新しいデータソースgetModel()
public TableModel getModel()
setModel(javax.swing.table.TableModel)
public void setColumnModel(TableColumnModel newModel)
newModel
- このテーブルの新しいデータソースgetColumnModel()
public TableColumnModel getColumnModel()
setColumnModel(javax.swing.table.TableColumnModel)
public void setSelectionModel(ListSelectionModel newModel)
newModel
- 新しい選択モデルgetSelectionModel()
public ListSelectionModel getSelectionModel()
setSelectionModel(javax.swing.ListSelectionModel)
public void tableChanged(TableModelEvent e)
public void columnAdded(TableColumnModelEvent e)
TableColumnModelListener
public void columnRemoved(TableColumnModelEvent e)
TableColumnModelListener
public void columnMoved(TableColumnModelEvent e)
TableColumnModelListener
public void columnMarginChanged(ChangeEvent e)
TableColumnModelListener
public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModelListener
public void valueChanged(ListSelectionEvent e)
ListSelectionListener
public void editingStopped(ChangeEvent e)
CellEditorListener
public void editingCanceled(ChangeEvent e)
CellEditorListener
public void setPreferredScrollableViewportSize(Dimension size)
size
- ビューがこのテーブルである JViewport の望ましいサイズを指定する Dimension オブジェクトScrollable.getPreferredScrollableViewportSize()
public Dimension getPreferredScrollableViewportSize()
Scrollable.getPreferredScrollableViewportSize()
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
このメソッドは、ユーザが単位スクロールを要求するたびに呼び出されます。
visibleRect
- ビューポート内で可視のビュー領域orientation
- SwingConstants.VERTICAL または SwingConstants.HORIZONTAL のどちらかdirection
- 上または左のスクロールではゼロより小さく、下または右のスクロールではゼロより大きいScrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
public boolean getScrollableTracksViewportWidth()
Scrollable.getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
Scrollable.getScrollableTracksViewportHeight()
protected void createDefaultRenderers()
protected void createDefaultEditors()
protected void initializeLocalVars()
protected TableModel createDefaultDataModel()
protected TableColumnModel createDefaultColumnModel()
protected ListSelectionModel createDefaultSelectionModel()
protected JTableHeader createDefaultTableHeader()
protected void resizeAndRepaint()
public TableCellEditor getCellEditor()
cellEditor
public void setCellEditor(TableCellEditor anEditor)
anEditor
- 編集を行う TableCellEditorcellEditor
public void setEditingColumn(int aColumn)
editingColumn
public void setEditingRow(int aRow)
editingRow
public TableCellRenderer getCellRenderer(int row, int column)
row
- 描画するセルの行 (ただし、先頭は 0)column
- 描画するセルの列 (ただし、先頭は 0)public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
renderer
- 準備する TableCellRendererrow
- 描画するセルの行 (ただし、先頭は 0)column
- 描画するセルの列 (ただし、先頭は 0)public TableCellEditor getCellEditor(int row, int column)
row
- 編集するセルの行 (ただし、先頭は 0)column
- 編集するセルの列 (ただし、先頭は 0)public Component prepareEditor(TableCellEditor editor, int row, int column)
editor
- 設定する TableCellEditorrow
- 編集するセルの行 (ただし、先頭は 0)column
- 編集するセルの列 (ただし、先頭は 0)public void removeEditor()
protected String paramString()
null
にはなりません。
JFC コンポーネントの新しい側面についての情報を返すには、paramString() をオーバーライドします。
public boolean isManagingFocus()
public AccessibleContext getAccessibleContext()
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |