|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.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
中的 addNotify
configureEnclosingScrollPane()
protected void configureEnclosingScrollPane()
JTable
是一個封閉 JScrollPane
的 viewportView
(通常情況如此),那麼可通過安裝表的 tableHeader
作為滾動窗格的 columnHeaderView
來配置此 ScrollPane
。以正常方式向 JScrollPane
添加 JTable
時,請使用 new JScrollPane(myTable)
,addNotify
是在 JTable
中調用的(表被添加到視口中時)。JTable
的 addNotify
方法將調用此方法,此方法是受保護的,以便子類別可以覆寫此預設的安裝過程。
addNotify()
public void removeNotify()
unconfigureEnclosingScrollPane
方法。
JComponent
中的 removeNotify
unconfigureEnclosingScrollPane()
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
。
tableHeader
setTableHeader(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
- 指定單元格之間新高度和寬度的 Dimension
getIntercellSpacing()
public Dimension getIntercellSpacing()
setIntercellSpacing(java.awt.Dimension)
public void setGridColor(Color gridColor)
gridColor
並重新顯示它。預設的顏色取決於外觀。
gridColor
- 網格線的新顏色
IllegalArgumentException
- 如果 gridColor
為 null
getGridColor()
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()
返回 true
GraphicsEnvironment.isHeadless()
,
getDragEnabled()
,
JComponent.setTransferHandler(javax.swing.TransferHandler)
,
TransferHandler
public boolean getDragEnabled()
dragEnabled
屬性的值setDragEnabled(boolean)
public final void setDropMode(DropMode dropMode)
DropMode.USE_SELECTION
。 但是,為了使用者使用更加方便,建議使用其他某個網要。例如,DropMode.ON
提供與選擇類似的顯示項的行為,但執行此操作不會影響表中的實際選擇。
JTable
支持以下放置網要:
DropMode.USE_SELECTION
DropMode.ON
DropMode.INSERT
DropMode.INSERT_ROWS
DropMode.INSERT_COLS
DropMode.ON_OR_INSERT
DropMode.ON_OR_INSERT_ROWS
DropMode.ON_OR_INSERT_COLS
只有此元件具有接受放置操作的 TransferHandler
時,放置網要才有意義。
dropMode
- 要使用的放置網要
IllegalArgumentException
- 如果放置網要不受支持或為 null
getDropMode()
,
getDropLocation()
,
JComponent.setTransferHandler(javax.swing.TransferHandler)
,
TransferHandler
public 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
- 是否應該自動創建 RowSorter
TableRowSorter
public 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
表示關閉排序TableRowSorter
public 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 表示第一列),則返回 truepublic boolean isCellSelected(int row, int column)
row
- 被查詢的行column
- 被查詢的列
row
和 column
是有效的索引,並且位於索引 (row, column)
的單元格被選定(其中第一行和第一列位於索引 0),則返回 truepublic 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
- 用於選定列表項前景中的 Color
getSelectionForeground()
,
setSelectionBackground(java.awt.Color)
,
JComponent.setForeground(java.awt.Color)
,
JComponent.setBackground(java.awt.Color)
,
JComponent.setFont(java.awt.Font)
public Color getSelectionBackground()
Color
setSelectionBackground(java.awt.Color)
,
setSelectionForeground(java.awt.Color)
public void setSelectionBackground(Color selectionBackground)
此屬性的預設值由外觀實作定義。
這是一個 JavaBeans 綁定屬性。
selectionBackground
- 用於選定單元格背景的 Color
getSelectionBackground()
,
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
的行數範圍之外的索引TableRowSorter
public 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
位置的列型別,其中第一列為列 0public 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
- 要添加的 TableColumn
removeColumn(javax.swing.table.TableColumn)
public void removeColumn(TableColumn aColumn)
JTable
的列陣列中移除 aColumn
。註:此方法不從模型中移除資料列;它只移除負責顯示它的 TableColumn
。
aColumn
- 要移除的 TableColumn
addColumn(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
中的 doLayout
LayoutManager.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
中的 getToolTipText
JComponent.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
,
editingRow
public Component getEditorComponent()
public int getEditingColumn()
editingRow
public int getEditingRow()
editingColumn
public 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
中的 updateUI
JComponent.updateUI()
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void setModel(TableModel dataModel)
newModel
,並向其註冊以獲取來自新資料模型的偵聽器通知。
dataModel
- 此表的新資料源
IllegalArgumentException
- 如果 newModel
為 null
getModel()
public TableModel getModel()
JTable
所顯示資料的 TableModel
。
JTable
所顯示資料的 TableModel
setModel(javax.swing.table.TableModel)
public void setColumnModel(TableColumnModel columnModel)
newModel
,並向其註冊以獲取來自新資料模型的偵聽器通知。還要將 JTableHeader
的列模型設置為 columnModel
。
columnModel
- 此表的新資料源
IllegalArgumentException
- 如果 columnModel
為 null
getColumnModel()
public TableColumnModel getColumnModel()
TableColumnModel
。
setColumnModel(javax.swing.table.TableColumnModel)
public void setSelectionModel(ListSelectionModel newModel)
newModel
,並向其註冊以獲取來自新資料模型的偵聽器通知。
newModel
- 新的選擇模型
IllegalArgumentException
- 如果 newModel
為 null
getSelectionModel()
public ListSelectionModel getSelectionModel()
ListSelectionModel
。
null
setSelectionModel(javax.swing.ListSelectionModel)
public void sorterChanged(RowSorterEvent e)
RowSorter
以某種方式發生了更改的 RowSorterListener
通知。
RowSorterListener
中的 sorterChanged
e
- 描述更改的 RowSorterEvent
NullPointerException
- 如果 e
為 null
public void tableChanged(TableModelEvent e)
TableModel
產生 TableModelEvent
時調用。應在該模型的坐標系統中建構 TableModelEvent
;當此 JTable
接收事件時,它執行到視圖坐標系統的適當映射。
應用程序程式碼不顯式地使用這些方法,它們由 JTable
在內部使用。
注意,從 1.3 版本開始,此方法清除選擇(如果有)。
TableModelListener
中的 tableChanged
public void columnAdded(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener
中的 columnAdded
TableColumnModelListener
public void columnRemoved(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener
中的 columnRemoved
TableColumnModelListener
public void columnMoved(TableColumnModelEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener
中的 columnMoved
e
- 接收到的事件TableColumnModelListener
public void columnMarginChanged(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener
中的 columnMarginChanged
e
- 接收到的事件TableColumnModelListener
public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel
的選擇模型更改時調用。
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
TableColumnModelListener
中的 columnSelectionChanged
e
- 接收到的事件TableColumnModelListener
public void valueChanged(ListSelectionEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
ListSelectionListener
中的 valueChanged
e
- 接收到的事件ListSelectionListener
public void editingStopped(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
CellEditorListener
中的 editingStopped
e
- 接收到的事件CellEditorListener
public void editingCanceled(ChangeEvent e)
應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。
CellEditorListener
中的 editingCanceled
e
- 接收到的事件CellEditorListener
public void setPreferredScrollableViewportSize(Dimension size)
size
- 指定 JViewport
(其視圖為此表)的 preferredSize
的 Dimension
物件Scrollable.getPreferredScrollableViewportSize()
public Dimension getPreferredScrollableViewportSize()
Scrollable
中的 getPreferredScrollableViewportSize
JViewport
(它顯示此表)的 preferredSize
的 Dimension
物件Scrollable.getPreferredScrollableViewportSize()
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
使用者每次請求一個單位的滾動時,就調用此方法。
Scrollable
中的 getScrollableUnitIncrement
visibleRect
- 視口中可見的視圖區域orientation
- SwingConstants.VERTICAL
或 SwingConstants.HORIZONTAL
direction
- 小於 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
中的 getScrollableBlockIncrement
visibleRect
- 視口內可見的視圖區域orientation
- SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。direction
- 小於 0 為向上/左滾動,大於 0 為向下/右滾動。
visibleRect.height
或 visibleRect.width
Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
public boolean getScrollableTracksViewportWidth()
autoResizeMode
設置為 AUTO_RESIZE_OFF
,則返回 false,這指示表的寬度不是由視口的寬度決定的。否則返回 true。
Scrollable
中的 getScrollableTracksViewportWidth
autoResizeMode
設置為 AUTO_RESIZE_OFF
,則返回 false;否則返回 trueScrollable.getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
false
指示表的高度不是由視口的高度決定的,除非 getFillsViewportHeight
為 true
並且該表的首選高度小於視口的高度。
Scrollable
中的 getScrollableTracksViewportHeight
false
,除非 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
中的 processKeyBinding
ks
- 被查詢的 KeyStroke
e
- KeyEvent
condition
- 為下列值之一:
pressed
- 如果鍵被按下,則為 true
protected void createDefaultRenderers()
DefaultTableCellRenderer
protected void createDefaultEditors()
DefaultCellEditor
protected void initializeLocalVars()
protected TableModel createDefaultDataModel()
DefaultTableModel
。子類別可以覆寫此方法以返回不同的表模型物件。
DefaultTableModel
protected TableColumnModel createDefaultColumnModel()
DefaultTableColumnModel
。子類別可以覆寫此方法以返回不同的列模型物件。
DefaultTableColumnModel
protected ListSelectionModel createDefaultSelectionModel()
DefaultListSelectionModel
。子類別可以覆寫此方法以返回不同的選擇模型物件。
DefaultListSelectionModel
protected JTableHeader createDefaultTableHeader()
JTableHeader
。子類別可以覆寫此方法以返回不同的表標題物件。
JTableHeader
protected void resizeAndRepaint()
revalidate
再調用 repaint
。
public TableCellEditor getCellEditor()
null
。
TableCellEditor
;如果該表當前沒有被編輯,則返回 null
。cellEditor
,
getCellEditor(int, int)
public void setCellEditor(TableCellEditor anEditor)
anEditor
- 活動單元格編輯器cellEditor
public void setEditingColumn(int aColumn)
editingColumn
變數。
aColumn
- 要編輯的單元格所在的列editingColumn
public 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
- 要準備的 TableCellRenderer
row
- 要呈現的單元格所在的行,其中第一行為 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
- 要設置的 TableCellEditor
row
- 要編輯的單元格所在的行,其中第一行為 0column
- 要編輯的單元格所在的列,其中第一列為 0
Component
public 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
,如果沒有則為 null
footerFormat
- 指定在列印腳注中所用文本的 MessageFormat
,如果沒有則為 null
showPrintDialog
- 是否顯示列印對話框attr
- 指定所有列印屬性的 PrintRequestAttributeSet
,如果沒有則為 null
interactive
- 是否以交互網要列印
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
,如果沒有則為 null
footerFormat
- 指定在列印腳注中所用文本的 MessageFormat
,如果沒有則為 null
showPrintDialog
- 是否顯示列印對話框attr
- 指定任何列印屬性的 PrintRequestAttributeSet
,如果沒有則為 null
interactive
- 是否以交互網要列印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
Printable
print(JTable.PrintMode, MessageFormat, MessageFormat,
boolean, PrintRequestAttributeSet, boolean)
,
Printable
,
PrinterJob
public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。