|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTable
public class JTable
JTable 用來顯示和編輯常規二維單元表。有關導向任務的文檔和使用 JTable 的範例,請參閱 The Java Tutorial 中的 How to Use Tables 一節。
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);
注意,如果要在單獨的視圖中(在 JScrollPane 外)使用 JTable 並顯示表標題,則可以使用 getTableHeader() 獲取並單獨顯示它。
要啟用行的排序和過濾,請使用 RowSorter。可以通過以下兩種方式之一設置一個行排序器。
RowSorter。例如:table.setRowSorter(new TableRowSorter(model))。
autoCreateRowSorter 屬性設置為 true,從而 JTable 可用於創建 RowSorter。例如:setAutoCreateRowSorter(true)。
設計使用 JTable 的應用程序時,務必要注意用來表示表資料的資料結構。DefaultTableModel 是一個模型實作,它使用一個 Vector 來存儲所有單元格的值,該 Vector 由包含多個 Object 的 Vector 組成。除了將資料從應用程序複製到 DefaultTableModel 中之外,還可以用 TableModel 介面的方法來包裹資料,這樣可將資料直接傳遞到 JTable,如上例所示。這通常可以提高應用程序的效率,因為模型可以自由選擇最適合資料的內部表示形式。在決定使用 AbstractTableModel 還是使用 DefaultTableModel 方面有一個好的實踐經驗,即在創建子類別時使用 AbstractTableModel 作為基礎類別,在不需要創建子類別時則使用 DefaultTableModel。
源分佈演示部分中的 "TableExample" 目錄給出了許多 JTable 用法的完整範例,包括如何使用 JTable 來提供一個可編輯的資料視圖(資料取自資料庫),以及如何修改顯示的列以使用指定的渲染器和編輯器。
JTable 使用專有的整數來參考它所顯示的模型的行和列。JTable 採用表格的單元格範圍,並在繪製時使用 getValueAt(int, int) 從模型中獲取值。務必記住各種 JTable 方法所返回的列和行索引是就 JTable(視圖)而言的,不一定是模型所使用的那些索引。
預設情況下,在 JTable 中對列進行重新安排,這樣在視圖中列的出現順序與模型中列的順序不同。但這根本不影響模型的實作:當列重新排列時,JTable 在內部保持列的新順序,並在查詢模型前轉換其列索引。
因此編寫 TableModel 時,不必偵聽列的重排事件,因為不管視圖怎樣,模型都將在其自己的坐標系統被查詢。在範例部分中有一個排序演算法的演示,此演示正是使用了此技術在另一個坐標系統中進行排序,其中更改了行順序,沒有更改列順序。
類似地,使用 RowSorter 提供的排序和過濾功能時,底層 TableModel 不需要知道怎樣進行排序,RowSorter 將處理它。對底層 TableModel 使用 JTable 的基於行的方法時,必須進行坐標轉換。所有基於 JTable 行的方法都是就 RowSorter 而言的,不一定與底層 TableModel 的方法相同。例如,選擇始終是就 JTable 而言的,因此使用 RowSorter 時,需要使用 convertRowIndexToView 或 convertRowIndexToModel 進行轉換。以下程式碼顯示了如何將 JTable 的坐標轉換為底層模型的坐標:
int[] selection = table.getSelectedRows();
for (int i = 0; i < selection.length; i++) {
selection[i] = table.convertRowIndexToModel(selection[i]);
}
// selection is now in terms of the underlying TableModel
預設情況下,如果啟用排序,那麼排序時 JTable 將保留基於模型的選擇和可變行高度。例如,如果當前選擇行 0(就底層模型而言),那麼排序之後將選擇行 0(就底層模型而言)。選擇有可能看起來被更改了,但就底層模型而言它仍然保持不變。模型索引不再可見或者被移除時除外。例如,如果行 0 被過濾掉了,那麼選擇在排序後將為空。
J2SE 5 在 JTable 中添加了一些方法,為某些普通列印需求提供方便的存取。print() 是一個簡單的新方法,它允許快速簡單地向應用程序添加列印支持。此外,新的 getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat) 方法可用於更高層級的列印需求。
對於所有的 JComponent 類別,可以使用 InputMap 和 ActionMap 將 Action 物件與 KeyStroke 進行關聯,並在指定的條件下執行動作。
警告:Swing 不是執行緒安全的。有關更多資訊,請參閱 Swing's Threading Policy。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans 套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder。
DefaultTableModel,
TableRowSorter| 巢狀類別摘要 | |
|---|---|
protected class |
JTable.AccessibleJTable
此類別實作對 JTable 類別的可存取性支持。 |
static class |
JTable.DropLocation
TransferHandler.DropLocation 的一個子類別,表示 JTable 的放置位置 (drop location)。 |
static class |
JTable.PrintMode
用於列印 JTable 的列印網要。 |
| 從類別 javax.swing.JComponent 繼承的巢狀類別/介面 |
|---|
JComponent.AccessibleJComponent |
| 從類別 java.awt.Container 繼承的巢狀類別/介面 |
|---|
Container.AccessibleAWTContainer |
| 從類別 java.awt.Component 繼承的巢狀類別/介面 |
|---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
| 欄位摘要 | |
|---|---|
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
從 Java 2 平臺 v1.3 開始已過時。 |
protected TableColumnModel |
columnModel
表的 TableColumnModel。 |
protected TableModel |
dataModel
表的 TableModel。 |
protected Hashtable |
defaultEditorsByColumnClass
一個由物件組成的表,它顯示並編輯單元格的內容,通過在 TableModel 介面的 getColumnClass 中所宣告的類別建立索引。 |
protected Hashtable |
defaultRenderersByColumnClass
一個由物件組成的表,它顯示單元格的內容,通過在 TableModel 介面的 getColumnClass 中所宣告的類別建立索引。 |
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
如果行選擇在此表中是允許的,則返回 true。 |
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 |
| 從介面 java.awt.image.ImageObserver 繼承的欄位 |
|---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
| 建構子摘要 | |
|---|---|
JTable()
建構一個預設的 JTable,使用預設的資料模型、預設的列模型和預設的選擇模型對其進行初始化。 |
|
JTable(int numRows,
int numColumns)
使用 DefaultTableModel 建構具有 numRows 行和 numColumns 列個空單元格的 JTable。 |
|
JTable(Object[][] rowData,
Object[] columnNames)
建構一個 JTable 來顯示二維陣列 rowData 中的值,其列名稱為 columnNames。 |
|
JTable(TableModel dm)
建構一個 JTable,使用資料模型 dm、預設的列模型和預設的選擇模型對其進行初始化。 |
|
JTable(TableModel dm,
TableColumnModel cm)
建構一個 JTable,使用資料模型 dm、列模型 cm 和預設的選擇模型對其進行初始化。 |
|
JTable(TableModel dm,
TableColumnModel cm,
ListSelectionModel sm)
建構一個 JTable,使用資料模型 dm、列模型 cm 和選擇模型 sm 對其進行初始化。 |
|
JTable(Vector rowData,
Vector columnNames)
建構一個 JTable 來顯示 Vector 所組成的 Vector rowData 中的值,其列名稱為 columnNames。 |
|
| 方法摘要 | |
|---|---|
void |
addColumn(TableColumn aColumn)
將 aColumn 追加到此 JTable 的列模型所保持的列陣列的尾部。 |
void |
addColumnSelectionInterval(int index0,
int index1)
將從 index0 到 index1 之間(包含兩端)的列添加到當前選擇中。 |
void |
addNotify()
調用 configureEnclosingScrollPane 方法。 |
void |
addRowSelectionInterval(int index0,
int index1)
將從 index0 到 index1 之間(包含兩端)的行添加到當前選擇中。 |
void |
changeSelection(int rowIndex,
int columnIndex,
boolean toggle,
boolean extend)
根據 toggle 和 extend 這兩個標誌的狀態,更新表的選擇模型。 |
void |
clearSelection()
取消選中所有已選定的行和列。 |
void |
columnAdded(TableColumnModelEvent e)
將列添加到表的列模型時調用。 |
int |
columnAtPoint(Point point)
返回 point 所在的列索引;如果結果不在 [0, getColumnCount()-1] 範圍內,則返回 -1。 |
void |
columnMarginChanged(ChangeEvent e)
當列由於間距的更改而被移動時調用。 |
void |
columnMoved(TableColumnModelEvent e)
重新定位列時調用。 |
void |
columnRemoved(TableColumnModelEvent e)
從表的列模型中移除列時調用。 |
void |
columnSelectionChanged(ListSelectionEvent e)
TableColumnModel 的選擇模型更改時調用。 |
protected void |
configureEnclosingScrollPane()
如果此 JTable 是一個封閉 JScrollPane 的 viewportView(通常情況如此),那麼可通過安裝表的 tableHeader 作為滾動窗格的 columnHeaderView 來配置此 ScrollPane。 |
int |
convertColumnIndexToModel(int viewColumnIndex)
將視圖中位於 viewColumnIndex 的列索引映射到表模型中的列索引。 |
int |
convertColumnIndexToView(int modelColumnIndex)
將表模型中位於 modelColumnIndex 的列索引映射到視圖中的列索引。 |
int |
convertRowIndexToModel(int viewRowIndex)
將基於視圖的行索引映射到底層 TableModel。 |
int |
convertRowIndexToView(int modelRowIndex)
將基於 TableModel 的行索引映射到該視圖。 |
protected TableColumnModel |
createDefaultColumnModel()
返回預設的列模型物件,它是一個 DefaultTableColumnModel。 |
void |
createDefaultColumnsFromModel()
使用 TableModel 介面中定義的 getColumnCount 方法根據資料模型創建預設的表列。 |
protected TableModel |
createDefaultDataModel()
返回預設的表模型物件,它是一個 DefaultTableModel。 |
protected void |
createDefaultEditors()
為 object、number 和 boolean 值創建預設的單元格編輯器。 |
protected void |
createDefaultRenderers()
為 object、number、double、date、boolean 和 icon 創建預設的單元格渲染器。 |
protected ListSelectionModel |
createDefaultSelectionModel()
返回預設的選擇模型物件,它是一個 DefaultListSelectionModel。 |
protected JTableHeader |
createDefaultTableHeader()
返回預設的表標題物件,它是一個 JTableHeader。 |
static JScrollPane |
createScrollPaneForTable(JTable aTable)
已過時。 從 Swing version 1.0.2 開始,由 new JScrollPane(aTable) 取代。 |
void |
doLayout()
使此表佈局其行和列。 |
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()
獲取與此 JTable 關聯的 AccessibleContext。 |
boolean |
getAutoCreateColumnsFromModel()
確定表是否要根據模型創建預設的列。 |
boolean |
getAutoCreateRowSorter()
如果每當模型更改時,都應該創建一個新 RowSorter 並作為該表的排序器安裝,則返回 true;否則,返回 false。 |
int |
getAutoResizeMode()
返回表的自動調整網要。 |
TableCellEditor |
getCellEditor()
返回活動單元格編輯器;如果該表當前沒有被編輯,則返回 null。 |
TableCellEditor |
getCellEditor(int row,
int column)
返回適用於由 row 和 column 所指定單元格的編輯器。 |
Rectangle |
getCellRect(int row,
int column,
boolean includeSpacing)
返回位於 row 和 column 相交位置的單元格矩形。 |
TableCellRenderer |
getCellRenderer(int row,
int column)
返回適於由此行和列所指定單元格的渲染器。 |
boolean |
getCellSelectionEnabled()
如果同時啟用了行選擇模型和列選擇模型,則返回 true。 |
TableColumn |
getColumn(Object identifier)
返回表中列的 TableColumn 物件,當使用 equals 進行比較時,表的標識符等於 identifier。 |
Class<?> |
getColumnClass(int column)
返回出現在視圖中 column 列位置處的列型別。 |
int |
getColumnCount()
返回列模型中的列數。 |
TableColumnModel |
getColumnModel()
返回包含此表所有列資訊的 TableColumnModel。 |
String |
getColumnName(int column)
返回出現在視圖中 column 列位置處的列名稱。 |
boolean |
getColumnSelectionAllowed()
如果可以選擇列,則返回 true。 |
TableCellEditor |
getDefaultEditor(Class<?> columnClass)
尚未在 TableColumn 中設置編輯器時,返回要使用的編輯器。 |
TableCellRenderer |
getDefaultRenderer(Class<?> columnClass)
尚未在 TableColumn 中設置渲染器時,返回要使用的單元格渲染器。 |
boolean |
getDragEnabled()
返回是否啟用自動拖動處理。 |
JTable.DropLocation |
getDropLocation()
返回對元件的 DnD 操作期間此元件應該可見地指示為放置位置的位置;如果當前沒有顯示任何位置,則返回 null。 |
DropMode |
getDropMode()
返回此元件的放置網要。 |
int |
getEditingColumn()
返回包含當前被編輯的單元格的列索引。 |
int |
getEditingRow()
返回包含當前被編輯的單元格的行索引。 |
Component |
getEditorComponent()
返回處理編輯Session的元件。 |
boolean |
getFillsViewportHeight()
返回此表是否始終大到足以填充封閉視口的高度。 |
Color |
getGridColor()
返回用來繪製網格線的顏色。 |
Dimension |
getIntercellSpacing()
返回單元格之間的水平間距和垂直間距。 |
TableModel |
getModel()
返回提供此 JTable 所顯示資料的 TableModel。 |
Dimension |
getPreferredScrollableViewportSize()
返回此表視口的首選大小。 |
Printable |
getPrintable(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat)
返回列印此 JTable 中所使用的 Printable。 |
int |
getRowCount()
返回 JTable 中可以顯示的行數(給定無限空間)。 |
int |
getRowHeight()
返回表的行高,以像素為單位。 |
int |
getRowHeight(int row)
返回 row 中單元格的高度,以像素為單位。 |
int |
getRowMargin()
獲取單元格之間的間距,以像素為單位。 |
boolean |
getRowSelectionAllowed()
如果可以選擇行,則返回 true。 |
RowSorter<? extends TableModel> |
getRowSorter()
返回負責排序的物件。 |
int |
getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
返回 visibleRect.height 或 visibleRect.width,這取決於此表的方向。 |
boolean |
getScrollableTracksViewportHeight()
返回 false 指示表的高度不是由視口的高度決定的,除非 getFillsViewportHeight 為 true 並且該表的首選高度小於視口的高度。 |
boolean |
getScrollableTracksViewportWidth()
如果 autoResizeMode 設置為 AUTO_RESIZE_OFF,則返回 false,這指示表的寬度不是由視口的寬度決定的。 |
int |
getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
返回完全呈現出一個新行或新列(取決於方向)的滾動增量(以像素為單位)。 |
int |
getSelectedColumn()
返回第一個選定列的索引;如果沒有選定的列,則返回 -1。 |
int |
getSelectedColumnCount()
返回選定列數。 |
int[] |
getSelectedColumns()
返回所有選定列的索引。 |
int |
getSelectedRow()
返回第一個選定行的索引;如果沒有選定的行,則返回 -1。 |
int |
getSelectedRowCount()
返回選定行數。 |
int[] |
getSelectedRows()
返回所有選定行的索引。 |
Color |
getSelectionBackground()
返回選定單元格的背景色。 |
Color |
getSelectionForeground()
返回選定單元格的前景色。 |
ListSelectionModel |
getSelectionModel()
返回用來維持行選擇狀態的 ListSelectionModel。 |
boolean |
getShowHorizontalLines()
如果表繪製單元格之間的水平線,則返回 true,否則返回 false。 |
boolean |
getShowVerticalLines()
如果表繪製單元格之間的垂直線,則返回 true,否則返回 false。 |
boolean |
getSurrendersFocusOnKeystroke()
如果在鍵擊導致編輯器被啟動時編輯器應該獲得焦點,則返回 true |
JTableHeader |
getTableHeader()
返回此 JTable 所使用的 tableHeader。 |
String |
getToolTipText(MouseEvent event)
覆寫 JComponent 的 getToolTipText 方法,從而允許使用渲染器的提示(如果設置了文本)。 |
TableUI |
getUI()
返回呈現此元件的 L&F 物件。 |
String |
getUIClassID()
返回用於建構呈現此元件時所用 L&F 類別名稱的後綴。 |
boolean |
getUpdateSelectionOnSort()
如果排序後應該更新選擇,則返回 true。 |
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 |
isRowSelected(int row)
如果指定的索引位於行的有效範圍內,並且位於該索引的行被選定,則返回 true。 |
void |
moveColumn(int column,
int targetColumn)
將視圖中的 column 列移動到當前被 targetColumn 列所佔用的位置。 |
protected String |
paramString()
返回此表的字元串表示形式。 |
Component |
prepareEditor(TableCellEditor editor,
int row,
int column)
通過查詢 row、column 處單元格值的資料模型和單元格選擇狀態來準備編輯器。 |
Component |
prepareRenderer(TableCellRenderer renderer,
int row,
int column)
通過查詢 row、column 處單元格值的資料模型和單元格選擇狀態來準備渲染器。 |
boolean |
print()
一個便捷的方法,它顯示一個列印對話框,然後以 PrintMode.FIT_WIDTH 網要列印此 JTable,不列印標題或腳注文本。 |
boolean |
print(JTable.PrintMode printMode)
一個便捷的方法,它顯示一個列印對話框,然後以給定的列印網要列印此 JTable,不列印標題或腳注文本。 |
boolean |
print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat)
一個便捷的方法,它顯示一個列印對話框,然後以給定的列印網要列印此 JTable,列印指定的標題和腳注文本。 |
boolean |
print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat,
boolean showPrintDialog,
PrintRequestAttributeSet attr,
boolean interactive)
根據完全功能 print 方法的指定列印此表,將預設印表機指定為列印服務。 |
boolean |
print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat,
boolean showPrintDialog,
PrintRequestAttributeSet attr,
boolean interactive,
PrintService service)
列印此 JTable。 |
protected boolean |
processKeyBinding(KeyStroke ks,
KeyEvent e,
int condition,
boolean pressed)
由於發生 KeyEvent e 而調用此方法處理 ks 的鍵綁定。 |
void |
removeColumn(TableColumn aColumn)
從此 JTable 的列陣列中移除 aColumn。 |
void |
removeColumnSelectionInterval(int index0,
int index1)
取消選中從 index0 到 index1 之間(包含兩端)的列。 |
void |
removeEditor()
丟棄編輯器對象並釋放它用於單元格呈現的資源。 |
void |
removeNotify()
調用 unconfigureEnclosingScrollPane 方法。 |
void |
removeRowSelectionInterval(int index0,
int index1)
取消選中從 index0 到 index1 之間(包含兩端)的行。 |
protected void |
resizeAndRepaint()
等效於先調用 revalidate 再調用 repaint。 |
int |
rowAtPoint(Point point)
返回 point 所在的行索引;如果結果不在 [0, getRowCount()-1] 範圍內,則返回 -1。 |
void |
selectAll()
選擇表中的所有行、列和單元格。 |
void |
setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
設置此表的 autoCreateColumnsFromModel 標誌。 |
void |
setAutoCreateRowSorter(boolean autoCreateRowSorter)
指定其模型更改時是否應該為表創建一個 RowSorter。 |
void |
setAutoResizeMode(int mode)
當調整表的大小時,設置表的自動調整網要。 |
void |
setCellEditor(TableCellEditor anEditor)
設置活動單元格編輯器。 |
void |
setCellSelectionEnabled(boolean cellSelectionEnabled)
設置此表是否允許同時存在行選擇和列選擇。 |
void |
setColumnModel(TableColumnModel columnModel)
將此表的列模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。 |
void |
setColumnSelectionAllowed(boolean columnSelectionAllowed)
設置是否可以選擇此模型中的列。 |
void |
setColumnSelectionInterval(int index0,
int index1)
選擇從 index0 到 index1 之間(包含兩端)的列。 |
void |
setDefaultEditor(Class<?> columnClass,
TableCellEditor editor)
如果尚未在 TableColumn 中設置編輯器,則設置要使用的預設單元格編輯器。 |
void |
setDefaultRenderer(Class<?> columnClass,
TableCellRenderer renderer)
如果沒有在 TableColumn 中設置渲染器,則設置要使用的預設單元格渲染器。 |
void |
setDragEnabled(boolean b)
打開或關閉自動拖動處理。 |
void |
setDropMode(DropMode dropMode)
設置此元件的放置網要。 |
void |
setEditingColumn(int aColumn)
設置 editingColumn 變數。 |
void |
setEditingRow(int aRow)
設置 editingRow 變數。 |
void |
setFillsViewportHeight(boolean fillsViewportHeight)
設置此表是否始終大到足以填充封閉視口的高度。 |
void |
setGridColor(Color gridColor)
將用來繪製網格線的顏色設置為 gridColor 並重新顯示它。 |
void |
setIntercellSpacing(Dimension intercellSpacing)
將 rowMargin 和 columnMargin(單元格之間間距的高度和寬度)設置為 intercellSpacing。 |
void |
setModel(TableModel dataModel)
將此表的資料模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。 |
void |
setPreferredScrollableViewportSize(Dimension size)
設置此表視口的首選大小。 |
void |
setRowHeight(int rowHeight)
將所有單元格的高度設置為 rowHeight(以像素為單位),重新驗證並重新繪製它。 |
void |
setRowHeight(int row,
int rowHeight)
將 row 的高度設置為 rowHeight,重新驗證並重新繪製它。 |
void |
setRowMargin(int rowMargin)
設置相臨行中單元格之間的間距。 |
void |
setRowSelectionAllowed(boolean rowSelectionAllowed)
設置是否可以選擇此模型中的行。 |
void |
setRowSelectionInterval(int index0,
int index1)
選擇從 index0 到 index1 之間(包含兩端)的行。 |
void |
setRowSorter(RowSorter<? extends TableModel> sorter)
設置 RowSorter。 |
void |
setSelectionBackground(Color selectionBackground)
設置選定單元格的背景色。 |
void |
setSelectionForeground(Color selectionForeground)
設置選定單元格的前景色。 |
void |
setSelectionMode(int selectionMode)
將表的選擇網要設置為只允許單個選擇、單個連續間隔選擇或多間隔選擇。 |
void |
setSelectionModel(ListSelectionModel newModel)
將此表的行選擇模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。 |
void |
setShowGrid(boolean showGrid)
設置表是否繪製單元格周圍的網格線。 |
void |
setShowHorizontalLines(boolean showHorizontalLines)
設置表是否繪製單元格之間的水平線。 |
void |
setShowVerticalLines(boolean showVerticalLines)
設置表是否繪製單元格之間的垂直線。 |
void |
setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
設置由於 JTable 為某個單元格轉發鍵盤事件而導致編輯器被啟動時,此 JTable 中的編輯器是否獲得鍵盤焦點。 |
void |
setTableHeader(JTableHeader tableHeader)
將此 JTable 所使用的 tableHeader 設置為 newHeader。 |
void |
setUI(TableUI ui)
設置呈現此元件並進行重新繪製的 L&F 物件。 |
void |
setUpdateSelectionOnSort(boolean update)
指定排序後是否應該更新選擇。 |
void |
setValueAt(Object aValue,
int row,
int column)
設置表模型中 row 和 column 位置的單元格值。 |
void |
sizeColumnsToFit(boolean lastColumnOnly)
已過時。 從 Swing version 1.0.3 開始,由 doLayout() 取代。 |
void |
sizeColumnsToFit(int resizingColumn)
從 Java 2 平臺 v1.4 開始已過時。 |
void |
sorterChanged(RowSorterEvent e)
RowSorter 以某種方式發生了更改的 RowSorterListener 通知。 |
void |
tableChanged(TableModelEvent e)
當此表的 TableModel 產生 TableModelEvent 時調用。 |
protected void |
unconfigureEnclosingScrollPane()
通過將封閉滾動窗格的 columnHeaderView 替換為 null,可以起到 configureEnclosingScrollPane 的相反作用。 |
void |
updateUI()
UIManager 發出的表明 L&F 已經更改的通知。 |
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
TableModel。
protected TableColumnModel columnModel
TableColumnModel。
protected ListSelectionModel selectionModel
ListSelectionModel,用來追蹤行選擇。
protected JTableHeader tableHeader
TableHeader。
protected int rowHeight
protected int rowMargin
protected Color gridColor
protected boolean showHorizontalLines
showHorizontalLines 為 true,則表在單元格之間繪製水平行。
protected boolean showVerticalLines
showVerticalLines 為 true,則表在單元格之間繪製垂直行。
protected int autoResizeMode
protected boolean autoCreateColumnsFromModel
TableModel 進行查詢以建構預設列集。
protected Dimension preferredViewportSize
Scrollable 介面使用它來確定初始的可見區域。
protected boolean rowSelectionAllowed
protected boolean cellSelectionEnabled
rowSelectionAllowed 屬性和 columnModel 的 columnSelectionAllowed 屬性,或者使用方法 getCellSelectionEnabled。
protected transient Component editorComp
Component。
protected transient TableCellEditor cellEditor
null。
protected transient int editingColumn
protected transient int editingRow
protected transient Hashtable defaultRenderersByColumnClass
TableModel 介面的 getColumnClass 中所宣告的類別建立索引。
protected transient Hashtable defaultEditorsByColumnClass
TableModel 介面的 getColumnClass 中所宣告的類別建立索引。
protected Color selectionForeground
protected Color selectionBackground
| 建構子詳細資訊 |
|---|
public JTable()
JTable,使用預設的資料模型、預設的列模型和預設的選擇模型對其進行初始化。
createDefaultDataModel(),
createDefaultColumnModel(),
createDefaultSelectionModel()public JTable(TableModel dm)
JTable,使用資料模型 dm、預設的列模型和預設的選擇模型對其進行初始化。
dm - 表的資料模型createDefaultColumnModel(),
createDefaultSelectionModel()
public JTable(TableModel dm,
TableColumnModel cm)
JTable,使用資料模型 dm、列模型 cm 和預設的選擇模型對其進行初始化。
dm - 表的資料模型cm - 表的列模型createDefaultSelectionModel()
public JTable(TableModel dm,
TableColumnModel cm,
ListSelectionModel sm)
JTable,使用資料模型 dm、列模型 cm 和選擇模型 sm 對其進行初始化。如果任何參數為 null,則此方法將使用相應的預設模型初始化表。如果 cm 為非 null,則 autoCreateColumnsFromModel 標誌被設置為 false,否則設置為 true,並使用 dm 中各列的合適 TableColumn 來填充列模型。
dm - 表的資料模型cm - 表的列模型sm - 表的行選擇模型createDefaultDataModel(),
createDefaultColumnModel(),
createDefaultSelectionModel()
public JTable(int numRows,
int numColumns)
DefaultTableModel 建構具有 numRows 行和 numColumns 列個空單元格的 JTable。列名稱採用 "A"、"B"、"C" 等形式。
numRows - 表所擁有的行數numColumns - 表所擁有的列數DefaultTableModel
public JTable(Vector rowData,
Vector columnNames)
JTable 來顯示 Vector 所組成的 Vector rowData 中的值,其列名稱為 columnNames。rowData 中包含的 Vector 應該套件含該行的值。換句話說,可以通過以下程式碼獲取第 1 行,第 5 列單元格的值:
((Vector)rowData.elementAt(1)).elementAt(5);
rowData - 新表的資料columnNames - 每列的名稱
public JTable(Object[][] rowData,
Object[] columnNames)
JTable 來顯示二維陣列 rowData 中的值,其列名稱為 columnNames。rowData 是一個行陣列,因此可以通過以下程式碼獲取第 1 行,第 5 列單元格的值:
rowData[1][5];
所有行的長度必須與 columnNames 的長度相同。
rowData - 新表的資料columnNames - 每列的名稱| 方法詳細資訊 |
|---|
public void addNotify()
configureEnclosingScrollPane 方法。
JComponent 中的 addNotifyconfigureEnclosingScrollPane()protected void configureEnclosingScrollPane()
JTable 是一個封閉 JScrollPane 的 viewportView(通常情況如此),那麼可通過安裝表的 tableHeader 作為滾動窗格的 columnHeaderView 來配置此 ScrollPane。以正常方式向 JScrollPane 添加 JTable 時,請使用 new JScrollPane(myTable),addNotify 是在 JTable 中調用的(表被添加到視口中時)。JTable 的 addNotify 方法將調用此方法,此方法是受保護的,以便子類別可以覆寫此預設的安裝過程。
addNotify()public void removeNotify()
unconfigureEnclosingScrollPane 方法。
JComponent 中的 removeNotifyunconfigureEnclosingScrollPane()protected void unconfigureEnclosingScrollPane()
columnHeaderView 替換為 null,可以起到 configureEnclosingScrollPane 的相反作用。JTable 的 removeNotify 方法調用此方法,此方法是受保護的,以便子類別可以覆寫此預設的卸載過程。
removeNotify(),
configureEnclosingScrollPane()@Deprecated public static JScrollPane createScrollPaneForTable(JTable aTable)
new JScrollPane(aTable) 取代。
new JScrollPane(aTable)。
public void setTableHeader(JTableHeader tableHeader)
JTable 所使用的 tableHeader 設置為 newHeader。tableHeader 為 null 是合法的。
tableHeader - 新的 tableHeadergetTableHeader()public JTableHeader getTableHeader()
JTable 所使用的 tableHeader。
tableHeadersetTableHeader(javax.swing.table.JTableHeader)public void setRowHeight(int rowHeight)
rowHeight(以像素為單位),重新驗證並重新繪製它。單元格的高度等於行高減去行間距。
rowHeight - 新的行高
IllegalArgumentException - 如果 rowHeight 小於 1getRowHeight()public int getRowHeight()
setRowHeight(int)
public void setRowHeight(int row,
int rowHeight)
row 的高度設置為 rowHeight,重新驗證並重新繪製它。此行中單元格的高度等於行高減去行間距。
row - 更改高度的行rowHeight - 新的行高,以像素為單位
IllegalArgumentException - 如果 rowHeight 小於 1public int getRowHeight(int row)
row 中單元格的高度,以像素為單位。
row - 要返回其高度的行
public void setRowMargin(int rowMargin)
rowMargin - 一行中單元格之間的像素數getRowMargin()public int getRowMargin()
getIntercellSpacing().height。
setRowMargin(int)public void setIntercellSpacing(Dimension intercellSpacing)
rowMargin 和 columnMargin(單元格之間間距的高度和寬度)設置為 intercellSpacing。
intercellSpacing - 指定單元格之間新高度和寬度的 DimensiongetIntercellSpacing()public Dimension getIntercellSpacing()
setIntercellSpacing(java.awt.Dimension)public void setGridColor(Color gridColor)
gridColor 並重新顯示它。預設的顏色取決於外觀。
gridColor - 網格線的新顏色
IllegalArgumentException - 如果 gridColor 為 nullgetGridColor()public Color getGridColor()
setGridColor(java.awt.Color)public void setShowGrid(boolean showGrid)
showGrid 為 true,則繪製網格線;如果為 false,則不繪製。沒有 getShowGrid 方法,因為此狀態保存在兩個變數中,即 showHorizontalLines 和 showVerticalLines,可以對其中任何一個變數單獨進行查詢。
showGrid - 如果表視圖應該繪製網格線,則為 truesetShowVerticalLines(boolean),
setShowHorizontalLines(boolean)public void setShowHorizontalLines(boolean showHorizontalLines)
showHorizontalLines 為 true,則繪製水平線;如果為 false,則不繪製。
showHorizontalLines - 如果表視圖應該繪製水平線,則為 truegetShowHorizontalLines(),
setShowGrid(boolean),
setShowVerticalLines(boolean)public void setShowVerticalLines(boolean showVerticalLines)
showVerticalLines 為 true,則繪製垂直線;如果為 false,則不繪製。
showVerticalLines - 如果表視圖應該繪製垂直線,則為 truegetShowVerticalLines(),
setShowGrid(boolean),
setShowHorizontalLines(boolean)public boolean getShowHorizontalLines()
setShowHorizontalLines(boolean)public boolean getShowVerticalLines()
setShowVerticalLines(boolean)public void setAutoResizeMode(int mode)
mode - 5 個合法值之一:AUTO_RESIZE_OFF、AUTO_RESIZE_NEXT_COLUMN、AUTO_RESIZE_SUBSEQUENT_COLUMNS、AUTO_RESIZE_LAST_COLUMN、AUTO_RESIZE_ALL_COLUMNSgetAutoResizeMode(),
doLayout()public int getAutoResizeMode()
setAutoResizeMode(int),
doLayout()public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
autoCreateColumnsFromModel 標誌。如果 autoCreateColumnsFromModel 由 false 更改為 true,則此方法調用 createDefaultColumnsFromModel。
autoCreateColumnsFromModel - 如果 JTable 應該自動創建列,則為 truegetAutoCreateColumnsFromModel(),
createDefaultColumnsFromModel()public boolean getAutoCreateColumnsFromModel()
setModel 將清除所有現有列並根據新模型創建新的列。同樣,如果 tableChanged 通知中的事件指定整個表已更改,則將重新建構各列。預設值為 true。
setAutoCreateColumnsFromModel(boolean),
createDefaultColumnsFromModel()public void createDefaultColumnsFromModel()
TableModel 介面中定義的 getColumnCount 方法根據資料模型創建預設的表列。
在根據模型的資訊創建新的列之前,清除所有現有列。
getAutoCreateColumnsFromModel()
public void setDefaultRenderer(Class<?> columnClass,
TableCellRenderer renderer)
TableColumn 中設置渲染器,則設置要使用的預設單元格渲染器。如果 renderer 為 null,則移除此 columnClass 的預設渲染器。
columnClass - 設置此 columnClass 的預設單元格渲染器renderer - 此 columnClass 要使用的預設單元格渲染器getDefaultRenderer(java.lang.Class>),
setDefaultEditor(java.lang.Class>, javax.swing.table.TableCellEditor)public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
TableColumn 中設置渲染器時,返回要使用的單元格渲染器。呈現單元格時,渲染器是根據列中各單元格的類別從各個項的 Hashtable 中獲取的。如果沒有對應於此 columnClass 的項,則此方法返回最相關父級類別的項。JTable 安裝了對應於 Object、Number 和 Boolean 的項,它們都可以修改和替換。
columnClass - 返回此 columnClass 的預設單元格渲染器
setDefaultRenderer(java.lang.Class>, javax.swing.table.TableCellRenderer),
getColumnClass(int)
public void setDefaultEditor(Class<?> columnClass,
TableCellEditor editor)
TableColumn 中設置編輯器,則設置要使用的預設單元格編輯器。如果表不需要進行編輯,或者表中的特定列不需要編輯,則使用 TableModel 介面中的 isCellEditable 方法來確保此 JTable 在這些列中不啟動編輯器。如果 editor 為 null,則移除此 columnClass 的預設編輯器。
columnClass - 設置此 columnClass 的預設單元格編輯器editor - 此 columnClass 要使用的預設單元格編輯器TableModel.isCellEditable(int, int),
getDefaultEditor(java.lang.Class>),
setDefaultRenderer(java.lang.Class>, javax.swing.table.TableCellRenderer)public TableCellEditor getDefaultEditor(Class<?> columnClass)
TableColumn 中設置編輯器時,返回要使用的編輯器。編輯單元格時,編輯器是根據列中各單元格的類別從各項的 Hashtable 中獲取的。如果沒有對應於此 columnClass 的項,則此方法返回最相關父級類別的項。JTable 安裝了對應於 Object、Number 和 Boolean 的項,它們都可以修改和替換。
columnClass - 返回此 columnClass 的預設單元格編輯器
setDefaultEditor(java.lang.Class>, javax.swing.table.TableCellEditor),
getColumnClass(int)public void setDragEnabled(boolean b)
true,並且該表的 TransferHandler 需要為非 null。dragEnabled 屬性的預設值為 false。
遵守此屬性並識別使用者拖動動作的作業取決於外觀實作,尤其是表的 TableUI。當啟用自動拖動處理時,只要使用者在項(單個選擇網要中)或選擇(其他選擇網要中)上按下鼠標按鍵,並將鼠標移動幾個像素,多數外觀(包括子類別化 BasicLookAndFeel 的外觀)就會開始拖放操作。因此,將此屬性設置為 true 可以對選擇行為產生微妙的影響。
如果使用一個忽略此屬性的外觀,仍然可以通過在表的 TransferHandler 上調用 exportAsDrag 開始拖放操作。
b - 是否啟用自動拖動處理
HeadlessException - 如果 b 為 true,並且 GraphicsEnvironment.isHeadless() 返回 trueGraphicsEnvironment.isHeadless(),
getDragEnabled(),
JComponent.setTransferHandler(javax.swing.TransferHandler),
TransferHandlerpublic boolean getDragEnabled()
dragEnabled 屬性的值setDragEnabled(boolean)public final void setDropMode(DropMode dropMode)
DropMode.USE_SELECTION。 但是,為了使用者使用更加方便,建議使用其他某個網要。例如,DropMode.ON 提供與選擇類似的顯示項的行為,但執行此操作不會影響表中的實際選擇。
JTable 支持以下放置網要:
DropMode.USE_SELECTIONDropMode.ONDropMode.INSERTDropMode.INSERT_ROWSDropMode.INSERT_COLSDropMode.ON_OR_INSERTDropMode.ON_OR_INSERT_ROWSDropMode.ON_OR_INSERT_COLS
只有此元件具有接受放置操作的 TransferHandler 時,放置網要才有意義。
dropMode - 要使用的放置網要
IllegalArgumentException - 如果放置網要不受支持或為 nullgetDropMode(),
getDropLocation(),
JComponent.setTransferHandler(javax.swing.TransferHandler),
TransferHandlerpublic final DropMode getDropMode()
setDropMode(javax.swing.DropMode)public final JTable.DropLocation getDropLocation()
null。
此方法不用於從 TransferHandler 查詢放置操作,因為放置操作只在 TransferHandler 的 canImport 已經返回並允許顯示該位置之後才會被設置。
當此屬性更改時,元件將觸發名為 "dropLocation" 的屬性更改事件。
setDropMode(javax.swing.DropMode),
TransferHandler.canImport(TransferHandler.TransferSupport)public void setAutoCreateRowSorter(boolean autoCreateRowSorter)
RowSorter。
當調用 setAutoCreateRowSorter(true) 時,立即創建一個 TableRowSorter 並安裝在表上。autoCreateRowSorter 屬性保持為 true 時,每次模型更改都會創建一個新的 TableRowSorter 並將其設置為表的行排序器。
autoCreateRowSorter - 是否應該自動創建 RowSorterTableRowSorterpublic boolean getAutoCreateRowSorter()
RowSorter 並作為該表的排序器安裝,則返回 true;否則,返回 false。
RowSorter,則返回 truepublic void setUpdateSelectionOnSort(boolean update)
update - 在排序時是否應該更新選擇public boolean getUpdateSelectionOnSort()
public void setRowSorter(RowSorter<? extends TableModel> sorter)
RowSorter。RowSorter 用於提供對 JTable 的排序和過濾。
此方法清除該選擇並重置所有可變行高度。
如果 RowSorter 的底層模型不同於此 JTable 的底層模型,則將導致不確定的行為。
sorter - RowSorter;null 表示關閉排序TableRowSorterpublic RowSorter<? extends TableModel> getRowSorter()
public void setSelectionMode(int selectionMode)
JTable 提供用於處理行選擇和列選擇的所有方法。設置狀態時(例如 setSelectionMode),它不僅更新行選擇模型的網要,而且還將設置 columnModel 選擇模型中的類似值。如果希望在不同的網要中操作行選擇模型和列選擇模型,請直接設置這二者。
JTable 的行選擇模型和列選擇模型都預設使用 DefaultListSelectionModel,以便 JTable 與 JList 的工作方式一致。有關各種網要的詳細資訊,請參閱 JList 中的 setSelectionMode 方法。
JList.setSelectionMode(int)public void setRowSelectionAllowed(boolean rowSelectionAllowed)
rowSelectionAllowed - 如果此模型允許行選擇,則為 truegetRowSelectionAllowed()public boolean getRowSelectionAllowed()
setRowSelectionAllowed(boolean)public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
columnSelectionAllowed - 如果此模型允許列選擇,則為 truegetColumnSelectionAllowed()public boolean getColumnSelectionAllowed()
setColumnSelectionAllowed(boolean)public void setCellSelectionEnabled(boolean cellSelectionEnabled)
isCellSelected 以更改此預設行為。此方法等效於將 columnModel 的 rowSelectionAllowed 屬性和 columnSelectionAllowed 屬性均設置為所提供的值。
cellSelectionEnabled - 如果允許同時存在行選擇和列選擇,則為 truegetCellSelectionEnabled(),
isCellSelected(int, int)public boolean getCellSelectionEnabled()
getRowSelectionAllowed() && getColumnSelectionAllowed()。
setCellSelectionEnabled(boolean)public void selectAll()
public void clearSelection()
public void setRowSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的行。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0,getRowCount()-1] 範圍外
public void setColumnSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的列。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0, getColumnCount()-1] 範圍外
public void addRowSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的行添加到當前選擇中。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0, getRowCount()-1] 範圍外
public void addColumnSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的列添加到當前選擇中。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0, getColumnCount()-1] 範圍外
public void removeRowSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的行。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0, getRowCount()-1] 範圍外
public void removeColumnSelectionInterval(int index0,
int index1)
index0 到 index1 之間(包含兩端)的列。
index0 - 間隔的一端index1 - 間隔的另一端
IllegalArgumentException - 如果 index0 或 index1 位於 [0, getColumnCount()-1] 範圍外public int getSelectedRow()
public int getSelectedColumn()
public int[] getSelectedRows()
getSelectedRow()public int[] getSelectedColumns()
getSelectedColumn()public int getSelectedRowCount()
public int getSelectedColumnCount()
public boolean isRowSelected(int row)
row 是有效的索引,並且位於該索引的行被選定(其中 0 表示第一行),則返回 truepublic boolean isColumnSelected(int column)
column - 列模型中的列
column 是有效的索引,並且位於該索引的列被選定(其中 0 表示第一列),則返回 true
public boolean isCellSelected(int row,
int column)
row - 被查詢的行column - 被查詢的列
row 和 column 是有效的索引,並且位於索引 (row, column) 的單元格被選定(其中第一行和第一列位於索引 0),則返回 true
public void changeSelection(int rowIndex,
int columnIndex,
boolean toggle,
boolean extend)
toggle 和 extend 這兩個標誌的狀態,更新表的選擇模型。UI 所接收的鍵盤事件或鼠標事件所引起的大多數選擇更改都是通過此方法來傳遞的,以便子類別可以覆寫此行為。某些 UI 需要的功能可能多於此方法所提供的功能(例如在操作非連續選擇的前端時),而且對某些選擇更改可能不會調用到此方法中。
此實作使用以下約定:
toggle:false,extend:false。清除以前的選擇並確保選定新的單元格。
toggle:false,extend:true。將以前的選擇從定位點擴展到指定的單元格,清除所有其他選擇。
toggle:true,extend:false。如果指定的單元格是選定的,則取消選定它。如果它不是選定的,則選定它。
toggle:true,extend:true。將定位點的選擇狀態應用於它與指定單元間的所有單元。
rowIndex - 影響 row 的選擇columnIndex - 影響 column 的選擇toggle - 參見上面的描述extend - 如果為 true,則擴展當前的選擇public Color getSelectionForeground()
Color 物件setSelectionForeground(java.awt.Color),
setSelectionBackground(java.awt.Color)public void setSelectionForeground(Color selectionForeground)
此屬性的預設值由外觀實作定義。
這是一個 JavaBeans 綁定 (bound) 屬性。
selectionForeground - 用於選定列表項前景中的 ColorgetSelectionForeground(),
setSelectionBackground(java.awt.Color),
JComponent.setForeground(java.awt.Color),
JComponent.setBackground(java.awt.Color),
JComponent.setFont(java.awt.Font)public Color getSelectionBackground()
ColorsetSelectionBackground(java.awt.Color),
setSelectionForeground(java.awt.Color)public void setSelectionBackground(Color selectionBackground)
此屬性的預設值由外觀實作定義。
這是一個 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)
TableColumn 物件,當使用 equals 進行比較時,表的標識符等於 identifier。
identifier - 標識符物件
TableColumn 物件
IllegalArgumentException - 如果 identifier 為 null 或者沒有 TableColumn 具有此標識符public int convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex 的列索引映射到表模型中的列索引。返回模型中的對應列索引。如果 viewColumnIndex 小於 0,則返回 viewColumnIndex。
viewColumnIndex - 視圖中的列索引
convertColumnIndexToView(int)public int convertColumnIndexToView(int modelColumnIndex)
modelColumnIndex 的列索引映射到視圖中的列索引。返回視圖中的對應列索引;如果此列不是被顯示的列,則返回 -1。如果 modelColumnIndex 小於 0,則返回 modelColumnIndex。
modelColumnIndex - 模型中的列索引
convertColumnIndexToModel(int)public int convertRowIndexToView(int modelRowIndex)
TableModel 的行索引映射到該視圖。如果模型的內容沒有進行排序,則模型和視圖的索引相同。
modelRowIndex - 基於模型的行索引
IndexOutOfBoundsException - 如果啟用排序並傳遞 TableModel 的行數範圍之外的索引TableRowSorterpublic int convertRowIndexToModel(int viewRowIndex)
TableModel。如果模型的內容沒有進行排序,則模型和視圖的索引相同。
viewRowIndex - 視圖中行的索引
IndexOutOfBoundsException - 如果啟用排序並傳遞 JTable 範圍(由 getRowCount 方法確定)之外的索引TableRowSorter,
getRowCount()public int getRowCount()
JTable 中可以顯示的行數(給定無限空間)。如果已指定一個帶有過濾器的 RowSorter,則返回的行數可能與底層 TableModel 的行數不同。
JTable 中顯示的行數getColumnCount()public int getColumnCount()
getRowCount(),
removeColumn(javax.swing.table.TableColumn)public String getColumnName(int column)
column 列位置處的列名稱。
column - 在視圖中查詢的列
column 位置的列名稱,其中第一列為列 0public Class<?> getColumnClass(int column)
column 列位置處的列型別。
column - 在視圖中查詢的列
column 位置的列型別,其中第一列為列 0
public Object getValueAt(int row,
int column)
row 和 column 位置的單元格值。
注:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。
row - 其值要被查詢的行column - 其值要被查詢的列
public void setValueAt(Object aValue,
int row,
int column)
row 和 column 位置的單元格值。
註:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。
aValue 是一個新值。
aValue - 新值row - 要更改的單元格所在的行column - 要更改的單元格所在的列getValueAt(int, int)
public boolean isCellEditable(int row,
int column)
row 和 column 位置的單元格是可編輯的,則返回 true。否則,在單元格上調用 setValueAt 沒有任何效果。
註:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。
row - 其值要被查詢的行column - 其值要被查詢的列
setValueAt(java.lang.Object, int, int)public void addColumn(TableColumn aColumn)
aColumn 追加到此 JTable 的列模型所保持的列陣列的尾部。如果 aColumn 的列名稱為 null,則將 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)
JTable 的列陣列中移除 aColumn。註:此方法不從模型中移除資料列;它只移除負責顯示它的 TableColumn。
aColumn - 要移除的 TableColumnaddColumn(javax.swing.table.TableColumn)
public void moveColumn(int column,
int targetColumn)
column 列移動到當前被 targetColumn 列所佔用的位置。targetColumn 位置上的原有列向左或右移動以騰出空間。
column - 要移動的列的索引targetColumn - 列的新索引public int columnAtPoint(Point point)
point 所在的列索引;如果結果不在 [0, getColumnCount()-1] 範圍內,則返回 -1。
point - 要查詢的位置
point 所在的列索引;如果結果不在 [0, getColumnCount()-1] 範圍內,則返回 -1rowAtPoint(java.awt.Point)public int rowAtPoint(Point point)
point 所在的行索引;如果結果不在 [0, getRowCount()-1] 範圍內,則返回 -1。
point - 要查詢的位置
point 所在的行索引;如果結果不在 [0, getRowCount()-1] 範圍內,則返回 -1columnAtPoint(java.awt.Point)
public Rectangle getCellRect(int row,
int column,
boolean includeSpacing)
row 和 column 相交位置的單元格矩形。如果 includeSpacing 為 true,則返回的值具有指定行和列的完整高度和寬度。如果為 false,則返回的矩形為單元格空間減去單元格間的間隙,以便在呈現期間設置該屬性後,返回呈現和編輯的元件的真實邊界。
如果列索引有效但是行索引小於 0,則此方法返回一個矩形,此矩形的 y 和 height 設置為合適的值,其 x 和 width 值都設置為 0。通常,行索引或列索引指示適當區域外的單元格時,此方法都返回一個矩形,它描繪了表範圍內最近單元格的最近邊。當行索引和列索引都超出範圍時,返回的矩形覆寫了最近單元格的最近點。
在所有的情形中,使用此方法沿一個軸的計算結果不會因為沿另一個軸的計算出現異常而失敗。當單元格無效時,忽略 includeSpacing 參數。
row - 所需單元格所在的行索引column - 所需單元格所在的列索引;不一定與表中資料模型的列索引相同;convertColumnIndexToView(int) 方法可以用來將資料模型的列索引轉換為顯示的列索引includeSpacing - 如果為 false,則返回實際的單元格邊界,計算方法是從列模型和行模型的高度和寬度中減去單元格間距
row、column 處單元格的矩形getIntercellSpacing()public void doLayout()
JTable 列的總寬度等於表的寬度。
開始佈局之前,此方法獲取 tableHeader 的 resizingColumn。當由於要調整封閉視窗的大小而調用此方法時,resizingColumn 為 null。這意味著調整大小發生在 JTable 的“外部”,並且更改(或 "delta" )應該分佈到所有列,無論此 JTable 的自動調整大小網要如何。
如果 resizingColumn 不為 null,則它是發生大小更改的表中的一列,而不是表本身。在這種情況下,自動調整大小網要控制額外(或不足)空間在可用列之間的分佈方式。
該網要有:
Viewport 的寬度時,使用水平滾動條來適應列的寬度。如果 JTable 沒有封閉在 JScrollPane 中,則可能導致該表的一部分不可見。
JTable 中的所有列之間,包括正在被調整的列。
JTable 調整列寬時,它絕對遵守其最小值和最大值。但是即使在調用此方法後,列的總寬度仍然可能不等於表的寬度。發生這種情況時,JTable 不會進入 AUTO_RESIZE_OFF 網要來產生一個滾動條,或者中斷其當前自動調整網要的其他提交,相反,它允許其邊界設置為大於(或小於)最大總寬度(或最小總寬度),這意味著要麼沒有足夠的空間來顯示所有的列,要麼就是列不能填滿 JTable 的邊界。這將分別導致在繪製期間,某些列將被剪切掉,或者某個區域將被繪製為 JTable 的背景色。
用於在可用列之間分佈 delta 的機制是由 JTable 類別中的一個私有方法提供的:
adjustSizes(long targetSize, final Resizable3 r, boolean inverse)以下部分是對它的解釋。
Resizable3 是一個私有介面,它允許包含元素(具有大小、首選大小、最大大小和最小大小)集合的任何資料結構可以通過該演算法來操作其元素。
將 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] 範圍外時,演算法將所有大小設置為其適合的限定值(最大值或最小值)。
Container 中的 doLayoutLayoutManager.layoutContainer(java.awt.Container),
Container.setLayout(java.awt.LayoutManager),
Container.validate()@Deprecated public void sizeColumnsToFit(boolean lastColumnOnly)
doLayout() 取代。
doLayout()public void sizeColumnsToFit(int resizingColumn)
doLayout() 方法。
resizingColumn - 由於大小的改變導致需要進行此調整的列;如果沒有這樣的列,則為 -1doLayout()public String getToolTipText(MouseEvent event)
JComponent 的 getToolTipText 方法,從而允許使用渲染器的提示(如果設置了文本)。
JTable 正確顯示其渲染器的工具提示,JTable 必須是 ToolTipManager 中的註冊元件。此操作可在 initializeLocalVars 中自動完成,但是如果之後在 JTable 上調用了 setToolTipText(null),則這是一個註銷的表元件,渲染器的提示將不再顯示。
JComponent 中的 getToolTipTextJComponent.getToolTipText()public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
surrendersFocusOnKeystroke - 如果在鍵擊導致編輯器被啟動時編輯器應該獲得焦點,則為 truegetSurrendersFocusOnKeystroke()public boolean getSurrendersFocusOnKeystroke()
setSurrendersFocusOnKeystroke(boolean)
public boolean editCellAt(int row,
int column)
row 和 column 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。注意,這是 editCellAt(int, int, null) 的一種便捷方法。
row - 要編輯的行column - 要編輯的列
public boolean editCellAt(int row,
int column,
EventObject e)
row 和 column 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。要防止 JTable 編輯特定的表、列或單元格的值,TableModel 介面中的 isCellEditable 方法應返回 false。
row - 要編輯的行column - 要編輯的列e - 要傳遞到 shouldSelectCell 中的事件;注意,從 Java 2 平臺 v1.2 開始,不再調用 shouldSelectCell
public boolean isEditing()
editingColumn,
editingRowpublic Component getEditorComponent()
public int getEditingColumn()
editingRowpublic int getEditingRow()
editingColumnpublic TableUI getUI()
TableUI 物件public void setUI(TableUI ui)
ui - TableUI L&F 物件UIDefaults.getUI(javax.swing.JComponent)public void updateUI()
UIManager 發出的表明 L&F 已經更改的通知。用 UIManager 的最新版本替換當前的 UI 物件。
JComponent 中的 updateUIJComponent.updateUI()public String getUIClassID()
JComponent 中的 getUIClassIDJComponent.getUIClassID(),
UIDefaults.getUI(javax.swing.JComponent)public void setModel(TableModel dataModel)
newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。
dataModel - 此表的新資料源
IllegalArgumentException - 如果 newModel 為 nullgetModel()public TableModel getModel()
JTable 所顯示資料的 TableModel。
JTable 所顯示資料的 TableModelsetModel(javax.swing.table.TableModel)public void setColumnModel(TableColumnModel columnModel)
newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。還要將 JTableHeader 的列模型設置為 columnModel。
columnModel - 此表的新資料源
IllegalArgumentException - 如果 columnModel 為 nullgetColumnModel()public TableColumnModel getColumnModel()
TableColumnModel。
setColumnModel(javax.swing.table.TableColumnModel)public void setSelectionModel(ListSelectionModel newModel)
newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。
newModel - 新的選擇模型
IllegalArgumentException - 如果 newModel 為 nullgetSelectionModel()public ListSelectionModel getSelectionModel()
ListSelectionModel。
nullsetSelectionModel(javax.swing.ListSelectionModel)public void sorterChanged(RowSorterEvent e)
RowSorter 以某種方式發生了更改的 RowSorterListener 通知。
RowSorterListener 中的 sorterChangede - 描述更改的 RowSorterEvent
NullPointerException - 如果 e 為 nullpublic void tableChanged(TableModelEvent e)
TableModel 產生 TableModelEvent 時調用。應在該模型的坐標系統中建構 TableModelEvent;當此 JTable 接收事件時,它執行到視圖坐標系統的適當映射。
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
注意,從 1.3 版本開始,此方法清除選擇(如果有)。
TableModelListener 中的 tableChangedpublic void columnAdded(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener 中的 columnAddedTableColumnModelListenerpublic void columnRemoved(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener 中的 columnRemovedTableColumnModelListenerpublic void columnMoved(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener 中的 columnMovede - 接收到的事件TableColumnModelListenerpublic void columnMarginChanged(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener 中的 columnMarginChangede - 接收到的事件TableColumnModelListenerpublic void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel 的選擇模型更改時調用。
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener 中的 columnSelectionChangede - 接收到的事件TableColumnModelListenerpublic void valueChanged(ListSelectionEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
ListSelectionListener 中的 valueChangede - 接收到的事件ListSelectionListenerpublic void editingStopped(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
CellEditorListener 中的 editingStoppede - 接收到的事件CellEditorListenerpublic void editingCanceled(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
CellEditorListener 中的 editingCancelede - 接收到的事件CellEditorListenerpublic void setPreferredScrollableViewportSize(Dimension size)
size - 指定 JViewport(其視圖為此表)的 preferredSize 的 Dimension 物件Scrollable.getPreferredScrollableViewportSize()public Dimension getPreferredScrollableViewportSize()
Scrollable 中的 getPreferredScrollableViewportSizeJViewport(它顯示此表)的 preferredSize 的 Dimension 物件Scrollable.getPreferredScrollableViewportSize()
public int getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
使用者每次請求一個單位的滾動時,就調用此方法。
Scrollable 中的 getScrollableUnitIncrementvisibleRect - 視口中可見的視圖區域orientation - SwingConstants.VERTICAL 或 SwingConstants.HORIZONTALdirection - 小於 0 向上/左滾動,大於 0 向下/右滾動
Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
public int getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
visibleRect.height 或 visibleRect.width,這取決於此表的方向。注意,從 Swing 1.1.1 (Java 2 v 1.2.2) 開始,返回的值將確保視口在行邊界上完全對齊。
Scrollable 中的 getScrollableBlockIncrementvisibleRect - 視口內可見的視圖區域orientation - SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。direction - 小於 0 為向上/左滾動,大於 0 為向下/右滾動。
visibleRect.height 或 visibleRect.widthScrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)public boolean getScrollableTracksViewportWidth()
autoResizeMode 設置為 AUTO_RESIZE_OFF,則返回 false,這指示表的寬度不是由視口的寬度決定的。否則返回 true。
Scrollable 中的 getScrollableTracksViewportWidthautoResizeMode 設置為 AUTO_RESIZE_OFF,則返回 false;否則返回 trueScrollable.getScrollableTracksViewportWidth()public boolean getScrollableTracksViewportHeight()
false 指示表的高度不是由視口的高度決定的,除非 getFillsViewportHeight 為 true 並且該表的首選高度小於視口的高度。
Scrollable 中的 getScrollableTracksViewportHeightfalse,除非 getFillsViewportHeight 為 true 並且需要延伸該表以填充視口Scrollable.getScrollableTracksViewportHeight(),
setFillsViewportHeight(boolean),
getFillsViewportHeight()public void setFillsViewportHeight(boolean fillsViewportHeight)
false。
fillsViewportHeight - 此表是否始終大到足以填充封閉視口的高度getFillsViewportHeight(),
getScrollableTracksViewportHeight()public boolean getFillsViewportHeight()
setFillsViewportHeight(boolean)
protected boolean processKeyBinding(KeyStroke ks,
KeyEvent e,
int condition,
boolean pressed)
JComponent 複製的描述KeyEvent e 而調用此方法處理 ks 的鍵綁定。此方法將獲取適當的 InputMap、獲取綁定、從 ActionMap 獲取動作,然後(如果找到該動作並且已啟用該元件)調用 notifyAction 來通知該動作。
JComponent 中的 processKeyBindingks - 被查詢的 KeyStrokee - KeyEventcondition - 為下列值之一:
pressed - 如果鍵被按下,則為 true
protected void createDefaultRenderers()
DefaultTableCellRendererprotected void createDefaultEditors()
DefaultCellEditorprotected void initializeLocalVars()
protected TableModel createDefaultDataModel()
DefaultTableModel。子類別可以覆寫此方法以返回不同的表模型物件。
DefaultTableModelprotected TableColumnModel createDefaultColumnModel()
DefaultTableColumnModel。子類別可以覆寫此方法以返回不同的列模型物件。
DefaultTableColumnModelprotected ListSelectionModel createDefaultSelectionModel()
DefaultListSelectionModel。子類別可以覆寫此方法以返回不同的選擇模型物件。
DefaultListSelectionModelprotected JTableHeader createDefaultTableHeader()
JTableHeader。子類別可以覆寫此方法以返回不同的表標題物件。
JTableHeaderprotected void resizeAndRepaint()
revalidate 再調用 repaint。
public TableCellEditor getCellEditor()
null。
TableCellEditor;如果該表當前沒有被編輯,則返回 null。cellEditor,
getCellEditor(int, int)public void setCellEditor(TableCellEditor anEditor)
anEditor - 活動單元格編輯器cellEditorpublic void setEditingColumn(int aColumn)
editingColumn 變數。
aColumn - 要編輯的單元格所在的列editingColumnpublic void setEditingRow(int aRow)
editingRow 變數。
aRow - 要編輯的單元格所在的行editingRow
public TableCellRenderer getCellRenderer(int row,
int column)
TableColumn 有一個非 null 的渲染器,則返回它。如果沒有,則尋找此列中的資料類別(使用 getColumnClass),並返回此資料型別的預設渲染器。
註:在整個表的套件中,內部實作始終使用此方法來提供渲染器,以便子類別能夠安全地覆寫此預設行為。
row - 要呈現的單元格所在的行,其中第一行為 0column - 要呈現的單元格所在的列,其中第一列為 0
null,則返回此型別物件的預設渲染器DefaultTableCellRenderer,
TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer),
setDefaultRenderer(java.lang.Class>, javax.swing.table.TableCellRenderer)
public Component prepareRenderer(TableCellRenderer renderer,
int row,
int column)
row、column 處單元格值的資料模型和單元格選擇狀態來準備渲染器。返回事件所在的元件(可能是 Component 或 JComponent)。
列印操作期間,此方法將配置不指示選擇和焦點的渲染器,以防止它們出現在列印輸出中。要執行基於該表是否列印的其他定制,可以檢查 JComponent.isPaintingForPrint() 的值(在此處或者在自定義渲染器中)。
註:在整個表的套件中,內部實作始終使用此方法來準備渲染器,以便子類別能夠安全地覆寫此預設行為。
renderer - 要準備的 TableCellRendererrow - 要呈現的單元格所在的行,其中第一行為 0column - 要呈現的單元格所在的列,其中第一列為 0
Component
public TableCellEditor getCellEditor(int row,
int column)
row 和 column 所指定單元格的編輯器。如果此列的 TableColumn 有一個非 null 的編輯器,則返回它。如果沒有,則尋找此列中的資料類別(使用 getColumnClass),並返回此型別資料的預設編輯器。
註:在整個表的套件中,內部實作始終使用此方法來提供編輯器,以便子類別能夠安全地覆寫此預設行為。
row - 要編輯的單元格所在的行,其中第一行為 0column - 要編輯的單元格所在的列,其中第一列為 0
null,則返回此型別單元格的預設編輯器DefaultCellEditor
public Component prepareEditor(TableCellEditor editor,
int row,
int column)
row、column 處單元格值的資料模型和單元格選擇狀態來準備編輯器。
註:在整個表的套件中,內部實作始終使用此方法來準備編輯器,以便子類別能夠安全地覆寫此預設行為。
editor - 要設置的 TableCellEditorrow - 要編輯的單元格所在的行,其中第一行為 0column - 要編輯的單元格所在的列,其中第一列為 0
Componentpublic void removeEditor()
protected String paramString()
null。
JComponent 中的 paramString
public boolean print()
throws PrinterException
PrintMode.FIT_WIDTH 網要列印此 JTable,不列印標題或腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。
註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService),
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode)
throws PrinterException
JTable,不列印標題或腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。
註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。
printMode - printable 應使用的列印網要
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService),
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat)
throws PrinterException
JTable,列印指定的標題和腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。
註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。
printMode - printable 應使用的列印網要headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 nullfooterFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 null
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService),
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat,
boolean showPrintDialog,
PrintRequestAttributeSet attr,
boolean interactive)
throws PrinterException,
HeadlessException
print 方法的指定列印此表,將預設印表機指定為列印服務。
printMode - printable 應該使用的列印網要headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 nullfooterFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 nullshowPrintDialog - 是否顯示列印對話框attr - 指定所有列印屬性的 PrintRequestAttributeSet,如果沒有則為 nullinteractive - 是否以交互網要列印
HeadlessException - 如果要求方法顯示列印對話框或交互運行,並且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止print(JTable.PrintMode, MessageFormat, MessageFormat,
boolean, PrintRequestAttributeSet, boolean, PrintService),
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat,
boolean showPrintDialog,
PrintRequestAttributeSet attr,
boolean interactive,
PrintService service)
throws PrinterException,
HeadlessException
JTable。按照大多數開發人員所採取的步驟來列印 JTable。簡單地說,它準備表,調用 getPrintable 來獲取合適的 Printable,然後將其發送到印表機。
boolean 參數允許指定是否向使用者顯示列印對話框。顯示列印對話框時,使用者可以使用該對話框更改目標印表機或列印屬性,甚至可以取消列印。另外兩個參數允許指定 PrintService 和列印屬性。這些參數可以用來提供列印對話框的初始值,或者在未顯示對話框時指定值。
第二個 boolean 參數允許指定是否以交互網要執行列印。如果為 true,則在列印期間將顯示一個有網要的進度對話框(帶有中止選項)。此對話框還可防止任何可能影響表的使用者動作。但是,它不能防止程式碼對表的修改(例如,另一個執行緒使用 SwingUtilities.invokeLater 發送更新)。因此,開發人員要負責確保在列印期間沒有任何其他程式碼會以任何方式修改表(無效的修改包括在大小、渲染器或底層資料方面的修改)。如果在列印期間更改了表,則會產生不確定的列印行為。
如果將此參數指定為 false,則不顯示對話框,列印將立即在事件指派進程上開始。在列印完成前,這將阻塞任何其他事件的處理(包括重新繪製)。儘管這有效地防止了對表的更改,但使用者使用起來不是很方便。出於這個原因,建議只在從一個沒有可視 GUI 的應用程序列印時才指定 false。
註:在 headless 網要下,試圖顯示列印對話框或交互運行將導致 HeadlessException。
獲取 printable 前,此方法將會正常地終止編輯(如有必要),以防止編輯器在列印結果中顯示。此外,JTable 在未指示選擇和焦點的列印期間將準備好其渲染器。至於定制列印輸出中表的外觀的更多資訊,開發人員可以提供自定義渲染器或者條件化 JComponent.isPaintingForPrint() 值的繪製網要。
有關如何列印表的更多描述,請參見 getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)。
printMode - printable 應使用的列印網要headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 nullfooterFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 nullshowPrintDialog - 是否顯示列印對話框attr - 指定任何列印屬性的 PrintRequestAttributeSet,如果沒有則為 nullinteractive - 是否以交互網要列印service - 目標 PrintService,或者為 null,表示使用預設印表機
HeadlessException - 如果要求方法顯示列印對話框或交互運行,並且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果安全管理器存在並且其 SecurityManager.checkPrintJobAccess() 方法不允許此執行緒創建列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat),
GraphicsEnvironment.isHeadless()
public Printable getPrintable(JTable.PrintMode printMode,
MessageFormat headerFormat,
MessageFormat footerFormat)
Printable。
此方法用於希望定制 JTable 的 print 方法所使用的預設 Printable 實作的開發人員。只想列印該表的開發人員應該直接使用其中一個列印方法。
可以在兩種列印網要的任意一個內請求 Printable。在這兩種網要中,它按順序自然地將表的各行分散到多個頁中,每頁放入盡可能多的行。PrintMode.NORMAL 指定表以當前大小列印。在此網要中,可能需要以類似於行的方式將列分散到多頁中。需要這樣分散時,列以與表的 ComponentOrientation 一致的順序進行分佈。PrintMode.FIT_WIDTH 指定按比例縮小輸出(如有必要),以在每頁上放入表的整個寬度(憑此放入所有列)。寬度和高度等比例進行縮放,以保持輸出的高寬比。
Printable 將該表 JTableHeader(如果有)的合適部分作為每頁上表部分的標題。
可以通過提供 MessageFormat 參數將標題和腳注文本添加到輸出中。列印程式碼根據格式請求 String,提供可以包括在已格式化字元串中的單個項:表示當前頁碼的 Integer。
當某些字元(例如單引號)是特殊字元並需要轉義處理時,鼓勵閱讀 MessageFormat 的文檔。
以下範例創建一個可用來列印 "Duke's Table Page - " 和當前頁碼的 MessageFormat:
// notice the escaping of the single quote
// notice how the page number is included with "{0}"
MessageFormat format = new MessageFormat("Duke''s Table: Page - {0}");
Printable 限制向它列印的每一頁的可列印區域所繪製的內容。在某些情況下,可能看到該區域不可能放入所有頁的內容。在這種情況下,可以截取輸出,但實作將採取一些合理的行為。以下是幾種已知會發生的情況,以及如何通過此特定實作來處理它們:
ComponentOrientation 確定)開始列印盡可能多的文本。
PrintMode.NORMAL 中,當列太寬而無法放入可列印區域時,列印該列的中央部分,不列印表的左右邊框。
將此 Printable 套件裝到另一個 Printable 中是完全有效的,這可以用來創建複雜的報告和文檔。甚至可以請求將不同的頁呈現到不同大小的可列印區域中。必須準備好讓實作處理此問題(可能通過其佈局計算動態完成)。但是,當必須跨頁分散列時,為每頁提供不同的高度可能無法與 PrintMode.NORMAL 正常工作。
至於定制列印結果中表的外觀的資訊,JTable 自身將在列印期間負責隱藏選擇和焦點。對於其他定制,使用者的渲染器或繪製網要可以定制基於 JComponent.isPaintingForPrint() 值的外觀。
此外,調用此方法之前,可以首先 修改該表的狀態,例如取消單元編輯或者讓使用者恰當地調整表的大小。但是,在獲取此 Printable 之後,不得再修改該表的狀態(無效的修改包括在大小或底層資料方面的修改)。如果更改了該表,返回 Printable 的行為將是不確定的。
printMode - printable 應使用的列印網要headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 nullfooterFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 null
Printableprint(JTable.PrintMode, MessageFormat, MessageFormat,
boolean, PrintRequestAttributeSet, boolean),
Printable,
PrinterJobpublic AccessibleContext getAccessibleContext()
Accessible 中的 getAccessibleContextJComponent 中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。