JavaTM 2 Platform
Standard Ed. 6

javax.swing
類別 JTable

java.lang.Object
  繼承者 java.awt.Component
      繼承者 java.awt.Container
          繼承者 javax.swing.JComponent
              繼承者 javax.swing.JTable
所有已實作的介面:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, CellEditorListener, ListSelectionListener, RowSorterListener, TableColumnModelListener, TableModelListener, Scrollable

public class JTable
extends JComponent
implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListener

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。可以通過以下兩種方式之一設置一個行排序器。

設計使用 JTable 的應用程序時,務必要注意用來表示表資料的資料結構。DefaultTableModel 是一個模型實作,它使用一個 Vector 來存儲所有單元格的值,該 Vector 由包含多個 ObjectVector 組成。除了將資料從應用程序複製到 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 時,需要使用 convertRowIndexToViewconvertRowIndexToModel 進行轉換。以下程式碼顯示了如何將 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 類別,可以使用 InputMapActionMapAction 物件與 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)
          將從 index0index1 之間(包含兩端)的列添加到當前選擇中。
 void addNotify()
          調用 configureEnclosingScrollPane 方法。
 void addRowSelectionInterval(int index0, int index1)
          將從 index0index1 之間(包含兩端)的行添加到當前選擇中。
 void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
          根據 toggleextend 這兩個標誌的狀態,更新表的選擇模型。
 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 是一個封閉 JScrollPaneviewportView(通常情況如此),那麼可通過安裝表的 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)
          如果 rowcolumn 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。
 boolean editCellAt(int row, int column, EventObject e)
          如果 rowcolumn 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。
 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)
          返回適用於由 rowcolumn 所指定單元格的編輯器。
 Rectangle getCellRect(int row, int column, boolean includeSpacing)
          返回位於 rowcolumn 相交位置的單元格矩形。
 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.heightvisibleRect.width,這取決於此表的方向。
 boolean getScrollableTracksViewportHeight()
          返回 false 指示表的高度不是由視口的高度決定的,除非 getFillsViewportHeighttrue 並且該表的首選高度小於視口的高度。
 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)
          覆寫 JComponentgetToolTipText 方法,從而允許使用渲染器的提示(如果設置了文本)。
 TableUI getUI()
          返回呈現此元件的 L&F 物件。
 String getUIClassID()
          返回用於建構呈現此元件時所用 L&F 類別名稱的後綴。
 boolean getUpdateSelectionOnSort()
          如果排序後應該更新選擇,則返回 true。
 Object getValueAt(int row, int column)
          返回 rowcolumn 位置的單元格值。
protected  void initializeLocalVars()
          將表的屬性初始化為其預設值。
 boolean isCellEditable(int row, int column)
          如果 rowcolumn 位置的單元格是可編輯的,則返回 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)
          通過查詢 rowcolumn 處單元格值的資料模型和單元格選擇狀態來準備編輯器。
 Component prepareRenderer(TableCellRenderer renderer, int row, int column)
          通過查詢 rowcolumn 處單元格值的資料模型和單元格選擇狀態來準備渲染器。
 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)
          取消選中從 index0index1 之間(包含兩端)的列。
 void removeEditor()
          丟棄編輯器對象並釋放它用於單元格呈現的資源。
 void removeNotify()
          調用 unconfigureEnclosingScrollPane 方法。
 void removeRowSelectionInterval(int index0, int index1)
          取消選中從 index0index1 之間(包含兩端)的行。
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)
          選擇從 index0index1 之間(包含兩端)的列。
 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)
          將 rowMargincolumnMargin(單元格之間間距的高度和寬度)設置為 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)
          選擇從 index0index1 之間(包含兩端)的行。
 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)
          設置表模型中 rowcolumn 位置的單元格值。
 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)
          行選擇更改時調用,重新繪製來顯示新的選擇。
 
從類別 javax.swing.JComponent 繼承的方法
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
從類別 java.awt.Container 繼承的方法
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
從類別 java.awt.Component 繼承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

AUTO_RESIZE_OFF

public static final int AUTO_RESIZE_OFF
不自動調整列的寬度;使用滾動條。

另請參見:
常數欄位值

AUTO_RESIZE_NEXT_COLUMN

public static final int AUTO_RESIZE_NEXT_COLUMN
在 UI 中調整了一個列時,對其下一列進行相反方向的調整。

另請參見:
常數欄位值

AUTO_RESIZE_SUBSEQUENT_COLUMNS

public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS
在 UI 調整中,更改後續列以保持總寬度不變;此為預設行為。

另請參見:
常數欄位值

AUTO_RESIZE_LAST_COLUMN

public static final int AUTO_RESIZE_LAST_COLUMN
在所有的調整大小操作中,只對最後一列進行調整。

另請參見:
常數欄位值

AUTO_RESIZE_ALL_COLUMNS

public static final int AUTO_RESIZE_ALL_COLUMNS
在所有的調整大小操作中,按比例調整所有的列。

另請參見:
常數欄位值

dataModel

protected TableModel dataModel
表的 TableModel


columnModel

protected TableColumnModel columnModel
表的 TableColumnModel


selectionModel

protected ListSelectionModel selectionModel
表的 ListSelectionModel,用來追蹤行選擇。


tableHeader

protected JTableHeader tableHeader
表所使用的 TableHeader


rowHeight

protected int rowHeight
表中每一行的高度,以像素為單位。


rowMargin

protected int rowMargin
每行中單元格之間間距的高度,以像素為單位。


gridColor

protected Color gridColor
網格的顏色。


showHorizontalLines

protected boolean showHorizontalLines
如果 showHorizontalLines 為 true,則表在單元格之間繪製水平行。


showVerticalLines

protected boolean showVerticalLines
如果 showVerticalLines 為 true,則表在單元格之間繪製垂直行。


autoResizeMode

protected int autoResizeMode
確定表是否自動調整列的寬度以佔用表的整個寬度,以及如何進行調整。


autoCreateColumnsFromModel

protected boolean autoCreateColumnsFromModel
如果為 true,則表對 TableModel 進行查詢以建構預設列集。


preferredViewportSize

protected Dimension preferredViewportSize
Scrollable 介面使用它來確定初始的可見區域。


rowSelectionAllowed

protected boolean rowSelectionAllowed
如果行選擇在此表中是允許的,則返回 true。


cellSelectionEnabled

protected boolean cellSelectionEnabled
從 Java 2 平臺 v1.3 開始已過時。請使用 rowSelectionAllowed 屬性和 columnModelcolumnSelectionAllowed 屬性,或者使用方法 getCellSelectionEnabled


editorComp

protected transient Component editorComp
在編輯時處理編輯的 Component


cellEditor

protected transient TableCellEditor cellEditor
活動單元格編輯器物件,它覆寫當前單元格佔用的螢幕空間,並允許使用者更改其內容。如果當前沒有編輯該表,則為 null


editingColumn

protected transient int editingColumn
標識所編輯的單元格的列。


editingRow

protected transient int editingRow
標識所編輯的單元格的行。


defaultRenderersByColumnClass

protected transient Hashtable defaultRenderersByColumnClass
一個由物件組成的表,它顯示單元格的內容,通過在 TableModel 介面的 getColumnClass 中所宣告的類別建立索引。


defaultEditorsByColumnClass

protected transient Hashtable defaultEditorsByColumnClass
一個由物件組成的表,它顯示並編輯單元格的內容,通過在 TableModel 介面的 getColumnClass 中所宣告的類別建立索引。


selectionForeground

protected Color selectionForeground
已選定單元格的前景色。


selectionBackground

protected Color selectionBackground
已選定單元格的背景色。

建構子詳細資訊

JTable

public JTable()
建構一個預設的 JTable,使用預設的資料模型、預設的列模型和預設的選擇模型對其進行初始化。

另請參見:
createDefaultDataModel(), createDefaultColumnModel(), createDefaultSelectionModel()

JTable

public JTable(TableModel dm)
建構一個 JTable,使用資料模型 dm、預設的列模型和預設的選擇模型對其進行初始化。

參數:
dm - 表的資料模型
另請參見:
createDefaultColumnModel(), createDefaultSelectionModel()

JTable

public JTable(TableModel dm,
              TableColumnModel cm)
建構一個 JTable,使用資料模型 dm、列模型 cm 和預設的選擇模型對其進行初始化。

參數:
dm - 表的資料模型
cm - 表的列模型
另請參見:
createDefaultSelectionModel()

JTable

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()

JTable

public JTable(int numRows,
              int numColumns)
使用 DefaultTableModel 建構具有 numRows 行和 numColumns 列個空單元格的 JTable。列名稱採用 "A"、"B"、"C" 等形式。

參數:
numRows - 表所擁有的行數
numColumns - 表所擁有的列數
另請參見:
DefaultTableModel

JTable

public JTable(Vector rowData,
              Vector columnNames)
建構一個 JTable 來顯示 Vector 所組成的 Vector rowData 中的值,其列名稱為 columnNamesrowData 中包含的 Vector 應該套件含該行的值。換句話說,可以通過以下程式碼獲取第 1 行,第 5 列單元格的值:

((Vector)rowData.elementAt(1)).elementAt(5);

參數:
rowData - 新表的資料
columnNames - 每列的名稱

JTable

public JTable(Object[][] rowData,
              Object[] columnNames)
建構一個 JTable 來顯示二維陣列 rowData 中的值,其列名稱為 columnNamesrowData 是一個行陣列,因此可以通過以下程式碼獲取第 1 行,第 5 列單元格的值:

 rowData[1][5]; 

所有行的長度必須與 columnNames 的長度相同。

參數:
rowData - 新表的資料
columnNames - 每列的名稱
方法詳細資訊

addNotify

public void addNotify()
調用 configureEnclosingScrollPane 方法。

覆寫:
類別 JComponent 中的 addNotify
另請參見:
configureEnclosingScrollPane()

configureEnclosingScrollPane

protected void configureEnclosingScrollPane()
如果此 JTable 是一個封閉 JScrollPaneviewportView(通常情況如此),那麼可通過安裝表的 tableHeader 作為滾動窗格的 columnHeaderView 來配置此 ScrollPane。以正常方式向 JScrollPane 添加 JTable 時,請使用 new JScrollPane(myTable)addNotify 是在 JTable 中調用的(表被添加到視口中時)。JTableaddNotify 方法將調用此方法,此方法是受保護的,以便子類別可以覆寫此預設的安裝過程。

另請參見:
addNotify()

removeNotify

public void removeNotify()
調用 unconfigureEnclosingScrollPane 方法。

覆寫:
類別 JComponent 中的 removeNotify
另請參見:
unconfigureEnclosingScrollPane()

unconfigureEnclosingScrollPane

protected void unconfigureEnclosingScrollPane()
通過將封閉滾動窗格的 columnHeaderView 替換為 null,可以起到 configureEnclosingScrollPane 的相反作用。JTableremoveNotify 方法調用此方法,此方法是受保護的,以便子類別可以覆寫此預設的卸載過程。

從以下版本開始:
1.3
另請參見:
removeNotify(), configureEnclosingScrollPane()

createScrollPaneForTable

@Deprecated
public static JScrollPane createScrollPaneForTable(JTable aTable)
已過時。 從 Swing version 1.0.2 開始,由 new JScrollPane(aTable) 取代。

等效於 new JScrollPane(aTable)


setTableHeader

public void setTableHeader(JTableHeader tableHeader)
將此 JTable 所使用的 tableHeader 設置為 newHeadertableHeadernull 是合法的。

參數:
tableHeader - 新的 tableHeader
另請參見:
getTableHeader()

getTableHeader

public JTableHeader getTableHeader()
返回此 JTable 所使用的 tableHeader

返回:
此表所使用的 tableHeader
另請參見:
setTableHeader(javax.swing.table.JTableHeader)

setRowHeight

public void setRowHeight(int rowHeight)
將所有單元格的高度設置為 rowHeight(以像素為單位),重新驗證並重新繪製它。單元格的高度等於行高減去行間距。

參數:
rowHeight - 新的行高
拋出:
IllegalArgumentException - 如果 rowHeight 小於 1
另請參見:
getRowHeight()

getRowHeight

public int getRowHeight()
返回表的行高,以像素為單位。預設的行高為 16.0。

返回:
表的行高,以像素為單位
另請參見:
setRowHeight(int)

setRowHeight

public void setRowHeight(int row,
                         int rowHeight)
row 的高度設置為 rowHeight,重新驗證並重新繪製它。此行中單元格的高度等於行高減去行間距。

參數:
row - 更改高度的行
rowHeight - 新的行高,以像素為單位
拋出:
IllegalArgumentException - 如果 rowHeight 小於 1
從以下版本開始:
1.3

getRowHeight

public int getRowHeight(int row)
返回 row 中單元格的高度,以像素為單位。

參數:
row - 要返回其高度的行
返回:
行中單元格的高度,以像素為單位
從以下版本開始:
1.3

setRowMargin

public void setRowMargin(int rowMargin)
設置相臨行中單元格之間的間距。

參數:
rowMargin - 一行中單元格之間的像素數
另請參見:
getRowMargin()

getRowMargin

public int getRowMargin()
獲取單元格之間的間距,以像素為單位。等效於:getIntercellSpacing().height

返回:
一行中單元格之間的像素數
另請參見:
setRowMargin(int)

setIntercellSpacing

public void setIntercellSpacing(Dimension intercellSpacing)
rowMargincolumnMargin(單元格之間間距的高度和寬度)設置為 intercellSpacing

參數:
intercellSpacing - 指定單元格之間新高度和寬度的 Dimension
另請參見:
getIntercellSpacing()

getIntercellSpacing

public Dimension getIntercellSpacing()
返回單元格之間的水平間距和垂直間距。預設的間距為 (1, 1),它為繪製網格提供了空間。

返回:
單元格之間的水平間距和垂直間距
另請參見:
setIntercellSpacing(java.awt.Dimension)

setGridColor

public void setGridColor(Color gridColor)
將用來繪製網格線的顏色設置為 gridColor 並重新顯示它。預設的顏色取決於外觀。

參數:
gridColor - 網格線的新顏色
拋出:
IllegalArgumentException - 如果 gridColornull
另請參見:
getGridColor()

getGridColor

public Color getGridColor()
返回用來繪製網格線的顏色。預設的顏色取決於外觀。

返回:
用來繪製網格線的顏色
另請參見:
setGridColor(java.awt.Color)

setShowGrid

public void setShowGrid(boolean showGrid)
設置表是否繪製單元格周圍的網格線。如果 showGrid 為 true,則繪製網格線;如果為 false,則不繪製。沒有 getShowGrid 方法,因為此狀態保存在兩個變數中,即 showHorizontalLinesshowVerticalLines,可以對其中任何一個變數單獨進行查詢。

參數:
showGrid - 如果表視圖應該繪製網格線,則為 true
另請參見:
setShowVerticalLines(boolean), setShowHorizontalLines(boolean)

setShowHorizontalLines

public void setShowHorizontalLines(boolean showHorizontalLines)
設置表是否繪製單元格之間的水平線。如果 showHorizontalLines 為 true,則繪製水平線;如果為 false,則不繪製。

參數:
showHorizontalLines - 如果表視圖應該繪製水平線,則為 true
另請參見:
getShowHorizontalLines(), setShowGrid(boolean), setShowVerticalLines(boolean)

setShowVerticalLines

public void setShowVerticalLines(boolean showVerticalLines)
設置表是否繪製單元格之間的垂直線。如果 showVerticalLines 為 true,則繪製垂直線;如果為 false,則不繪製。

參數:
showVerticalLines - 如果表視圖應該繪製垂直線,則為 true
另請參見:
getShowVerticalLines(), setShowGrid(boolean), setShowHorizontalLines(boolean)

getShowHorizontalLines

public boolean getShowHorizontalLines()
如果表繪製單元格之間的水平線,則返回 true,否則返回 false。預設值為 true。

返回:
如果表繪製單元格之間的水平線,則返回 true;否則返回 false
另請參見:
setShowHorizontalLines(boolean)

getShowVerticalLines

public boolean getShowVerticalLines()
如果表繪製單元格之間的垂直線,則返回 true,否則返回 false。預設值為 true。

返回:
如果表繪製單元格之間的垂直線,則返回 true;否則返回 false
另請參見:
setShowVerticalLines(boolean)

setAutoResizeMode

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_COLUMNS
另請參見:
getAutoResizeMode(), doLayout()

getAutoResizeMode

public int getAutoResizeMode()
返回表的自動調整網要。預設的網要為 AUTO_RESIZE_SUBSEQUENT_COLUMNS。

返回:
表的 autoResizeMode
另請參見:
setAutoResizeMode(int), doLayout()

setAutoCreateColumnsFromModel

public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
設置此表的 autoCreateColumnsFromModel 標誌。如果 autoCreateColumnsFromModel 由 false 更改為 true,則此方法調用 createDefaultColumnsFromModel

參數:
autoCreateColumnsFromModel - 如果 JTable 應該自動創建列,則為 true
另請參見:
getAutoCreateColumnsFromModel(), createDefaultColumnsFromModel()

getAutoCreateColumnsFromModel

public boolean getAutoCreateColumnsFromModel()
確定表是否要根據模型創建預設的列。如果為 true,則 setModel 將清除所有現有列並根據新模型創建新的列。同樣,如果 tableChanged 通知中的事件指定整個表已更改,則將重新建構各列。預設值為 true。

返回:
表的 autoCreateColumnsFromModel
另請參見:
setAutoCreateColumnsFromModel(boolean), createDefaultColumnsFromModel()

createDefaultColumnsFromModel

public void createDefaultColumnsFromModel()
使用 TableModel 介面中定義的 getColumnCount 方法根據資料模型創建預設的表列。

在根據模型的資訊創建新的列之前,清除所有現有列。

另請參見:
getAutoCreateColumnsFromModel()

setDefaultRenderer

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)

getDefaultRenderer

public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
尚未在 TableColumn 中設置渲染器時,返回要使用的單元格渲染器。呈現單元格時,渲染器是根據列中各單元格的類別從各個項的 Hashtable 中獲取的。如果沒有對應於此 columnClass 的項,則此方法返回最相關父級類別的項。JTable 安裝了對應於 ObjectNumberBoolean 的項,它們都可以修改和替換。

參數:
columnClass - 返回此 columnClass 的預設單元格渲染器
返回:
此 columnClass 的渲染器
另請參見:
setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer), getColumnClass(int)

setDefaultEditor

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)

getDefaultEditor

public TableCellEditor getDefaultEditor(Class<?> columnClass)
尚未在 TableColumn 中設置編輯器時,返回要使用的編輯器。編輯單元格時,編輯器是根據列中各單元格的類別從各項的 Hashtable 中獲取的。如果沒有對應於此 columnClass 的項,則此方法返回最相關父級類別的項。JTable 安裝了對應於 ObjectNumberBoolean 的項,它們都可以修改和替換。

參數:
columnClass - 返回此 columnClass 的預設單元格編輯器
返回:
此 columnClass 要使用的預設單元格編輯器
另請參見:
setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor), getColumnClass(int)

setDragEnabled

public void setDragEnabled(boolean b)
打開或關閉自動拖動處理。要啟用自動拖動處理,應該將此屬性設置為 true,並且該表的 TransferHandler 需要為非 nulldragEnabled 屬性的預設值為 false

遵守此屬性並識別使用者拖動動作的作業取決於外觀實作,尤其是表的 TableUI。當啟用自動拖動處理時,只要使用者在項(單個選擇網要中)或選擇(其他選擇網要中)上按下鼠標按鍵,並將鼠標移動幾個像素,多數外觀(包括子類別化 BasicLookAndFeel 的外觀)就會開始拖放操作。因此,將此屬性設置為 true 可以對選擇行為產生微妙的影響。

如果使用一個忽略此屬性的外觀,仍然可以通過在表的 TransferHandler 上調用 exportAsDrag 開始拖放操作。

參數:
b - 是否啟用自動拖動處理
拋出:
HeadlessException - 如果 btrue,並且 GraphicsEnvironment.isHeadless() 返回 true
從以下版本開始:
1.4
另請參見:
GraphicsEnvironment.isHeadless(), getDragEnabled(), JComponent.setTransferHandler(javax.swing.TransferHandler), TransferHandler

getDragEnabled

public boolean getDragEnabled()
返回是否啟用自動拖動處理。

返回:
dragEnabled 屬性的值
從以下版本開始:
1.4
另請參見:
setDragEnabled(boolean)

setDropMode

public final void setDropMode(DropMode dropMode)
設置此元件的放置網要。為了向後相容性,此屬性的預設值為 DropMode.USE_SELECTION。 但是,為了使用者使用更加方便,建議使用其他某個網要。例如,DropMode.ON 提供與選擇類似的顯示項的行為,但執行此操作不會影響表中的實際選擇。

JTable 支持以下放置網要:

只有此元件具有接受放置操作的 TransferHandler 時,放置網要才有意義。

參數:
dropMode - 要使用的放置網要
拋出:
IllegalArgumentException - 如果放置網要不受支持或為 null
從以下版本開始:
1.6
另請參見:
getDropMode(), getDropLocation(), JComponent.setTransferHandler(javax.swing.TransferHandler), TransferHandler

getDropMode

public final DropMode getDropMode()
返回此元件的放置網要。

返回:
此元件的放置網要
從以下版本開始:
1.6
另請參見:
setDropMode(javax.swing.DropMode)

getDropLocation

public final JTable.DropLocation getDropLocation()
返回對元件的 DnD 操作期間此元件應該可見地指示為放置位置的位置;如果當前沒有顯示任何位置,則返回 null

此方法不用於從 TransferHandler 查詢放置操作,因為放置操作只在 TransferHandlercanImport 已經返回並允許顯示該位置之後才會被設置。

當此屬性更改時,元件將觸發名為 "dropLocation" 的屬性更改事件。

返回:
放置位置
從以下版本開始:
1.6
另請參見:
setDropMode(javax.swing.DropMode), TransferHandler.canImport(TransferHandler.TransferSupport)

setAutoCreateRowSorter

public void setAutoCreateRowSorter(boolean autoCreateRowSorter)
指定其模型更改時是否應該為表創建一個 RowSorter

當調用 setAutoCreateRowSorter(true) 時,立即創建一個 TableRowSorter 並安裝在表上。autoCreateRowSorter 屬性保持為 true 時,每次模型更改都會創建一個新的 TableRowSorter 並將其設置為表的行排序器。

參數:
autoCreateRowSorter - 是否應該自動創建 RowSorter
從以下版本開始:
1.6
另請參見:
TableRowSorter

getAutoCreateRowSorter

public boolean getAutoCreateRowSorter()
如果每當模型更改時,都應該創建一個新 RowSorter 並作為該表的排序器安裝,則返回 true;否則,返回 false

返回:
如果模型更改時應該創建一個 RowSorter,則返回 true
從以下版本開始:
1.6

setUpdateSelectionOnSort

public void setUpdateSelectionOnSort(boolean update)
指定排序後是否應該更新選擇。如果為 true,排序時選擇將被重置,從而仍然選擇相同的行(就模型而言)。預設值為 true。

參數:
update - 在排序時是否應該更新選擇
從以下版本開始:
1.6

getUpdateSelectionOnSort

public boolean getUpdateSelectionOnSort()
如果排序後應該更新選擇,則返回 true。

返回:
是否應該更新排序的選擇
從以下版本開始:
1.6

setRowSorter

public void setRowSorter(RowSorter<? extends TableModel> sorter)
設置 RowSorterRowSorter 用於提供對 JTable 的排序和過濾。

此方法清除該選擇並重置所有可變行高度。

如果 RowSorter 的底層模型不同於此 JTable 的底層模型,則將導致不確定的行為。

參數:
sorter - RowSorternull 表示關閉排序
從以下版本開始:
1.6
另請參見:
TableRowSorter

getRowSorter

public RowSorter<? extends TableModel> getRowSorter()
返回負責排序的物件。

返回:
負責排序的物件
從以下版本開始:
1.6

setSelectionMode

public void setSelectionMode(int selectionMode)
將表的選擇網要設置為只允許單個選擇、單個連續間隔選擇或多間隔選擇。

註:JTable 提供用於處理行選擇和列選擇的所有方法。設置狀態時(例如 setSelectionMode),它不僅更新行選擇模型的網要,而且還將設置 columnModel 選擇模型中的類似值。如果希望在不同的網要中操作行選擇模型和列選擇模型,請直接設置這二者。

JTable 的行選擇模型和列選擇模型都預設使用 DefaultListSelectionModel,以便 JTableJList 的工作方式一致。有關各種網要的詳細資訊,請參閱 JList 中的 setSelectionMode 方法。

另請參見:
JList.setSelectionMode(int)

setRowSelectionAllowed

public void setRowSelectionAllowed(boolean rowSelectionAllowed)
設置是否可以選擇此模型中的行。

參數:
rowSelectionAllowed - 如果此模型允許行選擇,則為 true
另請參見:
getRowSelectionAllowed()

getRowSelectionAllowed

public boolean getRowSelectionAllowed()
如果可以選擇行,則返回 true。

返回:
如果可以選擇行,則返回 true;否則返回 false
另請參見:
setRowSelectionAllowed(boolean)

setColumnSelectionAllowed

public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
設置是否可以選擇此模型中的列。

參數:
columnSelectionAllowed - 如果此模型允許列選擇,則為 true
另請參見:
getColumnSelectionAllowed()

getColumnSelectionAllowed

public boolean getColumnSelectionAllowed()
如果可以選擇列,則返回 true。

返回:
如果可以選擇列,則返回 true;否則返回 false
另請參見:
setColumnSelectionAllowed(boolean)

setCellSelectionEnabled

public void setCellSelectionEnabled(boolean cellSelectionEnabled)
設置此表是否允許同時存在行選擇和列選擇。當允許時,表將行選擇模型和列選擇模型的相交部分作為選定的單元格。覆寫 isCellSelected 以更改此預設行為。此方法等效於將 columnModelrowSelectionAllowed 屬性和 columnSelectionAllowed 屬性均設置為所提供的值。

參數:
cellSelectionEnabled - 如果允許同時存在行選擇和列選擇,則為 true
另請參見:
getCellSelectionEnabled(), isCellSelected(int, int)

getCellSelectionEnabled

public boolean getCellSelectionEnabled()
如果同時啟用了行選擇模型和列選擇模型,則返回 true。等效於 getRowSelectionAllowed() && getColumnSelectionAllowed()

返回:
如果同時啟用了行選擇模型和列選擇模型,則返回 true
另請參見:
setCellSelectionEnabled(boolean)

selectAll

public void selectAll()
選擇表中的所有行、列和單元格。


clearSelection

public void clearSelection()
取消選中所有已選定的行和列。


setRowSelectionInterval

public void setRowSelectionInterval(int index0,
                                    int index1)
選擇從 index0index1 之間(包含兩端)的行。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0,getRowCount()-1] 範圍外

setColumnSelectionInterval

public void setColumnSelectionInterval(int index0,
                                       int index1)
選擇從 index0index1 之間(包含兩端)的列。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0, getColumnCount()-1] 範圍外

addRowSelectionInterval

public void addRowSelectionInterval(int index0,
                                    int index1)
將從 index0index1 之間(包含兩端)的行添加到當前選擇中。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0, getRowCount()-1] 範圍外

addColumnSelectionInterval

public void addColumnSelectionInterval(int index0,
                                       int index1)
將從 index0index1 之間(包含兩端)的列添加到當前選擇中。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0, getColumnCount()-1] 範圍外

removeRowSelectionInterval

public void removeRowSelectionInterval(int index0,
                                       int index1)
取消選中從 index0index1 之間(包含兩端)的行。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0, getRowCount()-1] 範圍外

removeColumnSelectionInterval

public void removeColumnSelectionInterval(int index0,
                                          int index1)
取消選中從 index0index1 之間(包含兩端)的列。

參數:
index0 - 間隔的一端
index1 - 間隔的另一端
拋出:
IllegalArgumentException - 如果 index0index1 位於 [0, getColumnCount()-1] 範圍外

getSelectedRow

public int getSelectedRow()
返回第一個選定行的索引;如果沒有選定的行,則返回 -1。

返回:
第一個選定行的索引

getSelectedColumn

public int getSelectedColumn()
返回第一個選定列的索引;如果沒有選定的列,則返回 -1。

返回:
第一個選定列的索引。

getSelectedRows

public int[] getSelectedRows()
返回所有選定行的索引。

返回:
包含所有選定行索引的整數陣列;如果沒有選定的行,則返回一個空陣列
另請參見:
getSelectedRow()

getSelectedColumns

public int[] getSelectedColumns()
返回所有選定列的索引。

返回:
包含所有選定列索引的整數陣列;如果沒有選定的列,則返回一個空陣列
另請參見:
getSelectedColumn()

getSelectedRowCount

public int getSelectedRowCount()
返回選定行數。

返回:
選定行數;如果沒有選定的行,則返回 0

getSelectedColumnCount

public int getSelectedColumnCount()
返回選定列數。

返回:
選定列數;如果沒有選定的列,則返回 0

isRowSelected

public boolean isRowSelected(int row)
如果指定的索引位於行的有效範圍內,並且位於該索引的行被選定,則返回 true。

返回:
如果 row 是有效的索引,並且位於該索引的行被選定(其中 0 表示第一行),則返回 true

isColumnSelected

public boolean isColumnSelected(int column)
如果指定的索引位於列的有效範圍內,並且位於該索引的列被選定,則返回 true。

參數:
column - 列模型中的列
返回:
如果 column 是有效的索引,並且位於該索引的列被選定(其中 0 表示第一列),則返回 true

isCellSelected

public boolean isCellSelected(int row,
                              int column)
如果指定的索引位於行和列的有效範圍內,並且位於該指定位置的單元格被選定,則返回 true。

參數:
row - 被查詢的行
column - 被查詢的列
返回:
如果 rowcolumn 是有效的索引,並且位於索引 (row, column) 的單元格被選定(其中第一行和第一列位於索引 0),則返回 true

changeSelection

public void changeSelection(int rowIndex,
                            int columnIndex,
                            boolean toggle,
                            boolean extend)
根據 toggleextend 這兩個標誌的狀態,更新表的選擇模型。UI 所接收的鍵盤事件或鼠標事件所引起的大多數選擇更改都是通過此方法來傳遞的,以便子類別可以覆寫此行為。某些 UI 需要的功能可能多於此方法所提供的功能(例如在操作非連續選擇的前端時),而且對某些選擇更改可能不會調用到此方法中。

此實作使用以下約定:

參數:
rowIndex - 影響 row 的選擇
columnIndex - 影響 column 的選擇
toggle - 參見上面的描述
extend - 如果為 true,則擴展當前的選擇
從以下版本開始:
1.3

getSelectionForeground

public Color getSelectionForeground()
返回選定單元格的前景色。

返回:
前景屬性的 Color 物件
另請參見:
setSelectionForeground(java.awt.Color), setSelectionBackground(java.awt.Color)

setSelectionForeground

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)

getSelectionBackground

public Color getSelectionBackground()
返回選定單元格的背景色。

返回:
用於選定列表項背景中的 Color
另請參見:
setSelectionBackground(java.awt.Color), setSelectionForeground(java.awt.Color)

setSelectionBackground

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)

getColumn

public TableColumn getColumn(Object identifier)
返回表中列的 TableColumn 物件,當使用 equals 進行比較時,表的標識符等於 identifier

參數:
identifier - 標識符物件
返回:
與標識符相比對的 TableColumn 物件
拋出:
IllegalArgumentException - 如果 identifiernull 或者沒有 TableColumn 具有此標識符

convertColumnIndexToModel

public int convertColumnIndexToModel(int viewColumnIndex)
將視圖中位於 viewColumnIndex 的列索引映射到表模型中的列索引。返回模型中的對應列索引。如果 viewColumnIndex 小於 0,則返回 viewColumnIndex

參數:
viewColumnIndex - 視圖中的列索引
返回:
模型中的對應列索引
另請參見:
convertColumnIndexToView(int)

convertColumnIndexToView

public int convertColumnIndexToView(int modelColumnIndex)
將表模型中位於 modelColumnIndex 的列索引映射到視圖中的列索引。返回視圖中的對應列索引;如果此列不是被顯示的列,則返回 -1。如果 modelColumnIndex 小於 0,則返回 modelColumnIndex

參數:
modelColumnIndex - 模型中的列索引
返回:
視圖中的對應列索引
另請參見:
convertColumnIndexToModel(int)

convertRowIndexToView

public int convertRowIndexToView(int modelRowIndex)
將基於 TableModel 的行索引映射到該視圖。如果模型的內容沒有進行排序,則模型和視圖的索引相同。

參數:
modelRowIndex - 基於模型的行索引
返回:
視圖中對應行的索引;如果該行不可見,則返回 -1
拋出:
IndexOutOfBoundsException - 如果啟用排序並傳遞 TableModel 的行數範圍之外的索引
從以下版本開始:
1.6
另請參見:
TableRowSorter

convertRowIndexToModel

public int convertRowIndexToModel(int viewRowIndex)
將基於視圖的行索引映射到底層 TableModel。如果模型的內容沒有進行排序,則模型和視圖的索引相同。

參數:
viewRowIndex - 視圖中行的索引
返回:
模型中對應行的索引
拋出:
IndexOutOfBoundsException - 如果啟用排序並傳遞 JTable 範圍(由 getRowCount 方法確定)之外的索引
從以下版本開始:
1.6
另請參見:
TableRowSorter, getRowCount()

getRowCount

public int getRowCount()
返回 JTable 中可以顯示的行數(給定無限空間)。如果已指定一個帶有過濾器的 RowSorter,則返回的行數可能與底層 TableModel 的行數不同。

返回:
JTable 中顯示的行數
另請參見:
getColumnCount()

getColumnCount

public int getColumnCount()
返回列模型中的列數。注意,這可能與表模型中的列數不同。

返回:
表中的列數
另請參見:
getRowCount(), removeColumn(javax.swing.table.TableColumn)

getColumnName

public String getColumnName(int column)
返回出現在視圖中 column 列位置處的列名稱。

參數:
column - 在視圖中查詢的列
返回:
視圖中 column 位置的列名稱,其中第一列為列 0

getColumnClass

public Class<?> getColumnClass(int column)
返回出現在視圖中 column 列位置處的列型別。

參數:
column - 在視圖中查詢的列
返回:
視圖中 column 位置的列型別,其中第一列為列 0

getValueAt

public Object getValueAt(int row,
                         int column)
返回 rowcolumn 位置的單元格值。

:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。

參數:
row - 其值要被查詢的行
column - 其值要被查詢的列
返回:
指定單元格處的 Object

setValueAt

public void setValueAt(Object aValue,
                       int row,
                       int column)
設置表模型中 rowcolumn 位置的單元格值。

註:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。 aValue 是一個新值。

參數:
aValue - 新值
row - 要更改的單元格所在的行
column - 要更改的單元格所在的列
另請參見:
getValueAt(int, int)

isCellEditable

public boolean isCellEditable(int row,
                              int column)
如果 rowcolumn 位置的單元格是可編輯的,則返回 true。否則,在單元格上調用 setValueAt 沒有任何效果。

註:列是以表視圖的顯示順序,而不是以 TableModel 的列順序指定的。這是一項重要的區別,因為在使用者重新安排表中的列時,視圖中給定索引處的列將更改。同時使用者的操作不會影響模型的列順序。

參數:
row - 其值要被查詢的行
column - 其值要被查詢的列
返回:
如果單元格是可編輯的,則返回 true
另請參見:
setValueAt(java.lang.Object, int, int)

addColumn

public void addColumn(TableColumn aColumn)
aColumn 追加到此 JTable 的列模型所保持的列陣列的尾部。如果 aColumn 的列名稱為 null,則將 aColumn 的列名稱設置為 getModel().getColumnName() 所返回的名稱。

要向此 JTable 添加一列,以用給定的 widthcellRenderercellEditor 來顯示模型中第 modelColumn 列的資料,可以使用以下方法:


      addColumn(new TableColumn(modelColumn, width, cellRenderer, cellEditor));

  
[TableColumn 建構子中的任何一個方法都可以用來替代此方法。]模型的列號存儲在 TableColumn 中,在呈現和編輯過程中使用該列號來定位模型中合適的資料值。當列在視圖中重新排序時,不更改模型的列號。

參數:
aColumn - 要添加的 TableColumn
另請參見:
removeColumn(javax.swing.table.TableColumn)

removeColumn

public void removeColumn(TableColumn aColumn)
從此 JTable 的列陣列中移除 aColumn。註:此方法不從模型中移除資料列;它只移除負責顯示它的 TableColumn

參數:
aColumn - 要移除的 TableColumn
另請參見:
addColumn(javax.swing.table.TableColumn)

moveColumn

public void moveColumn(int column,
                       int targetColumn)
將視圖中的 column 列移動到當前被 targetColumn 列所佔用的位置。targetColumn 位置上的原有列向左或右移動以騰出空間。

參數:
column - 要移動的列的索引
targetColumn - 列的新索引

columnAtPoint

public int columnAtPoint(Point point)
返回 point 所在的列索引;如果結果不在 [0, getColumnCount()-1] 範圍內,則返回 -1。

參數:
point - 要查詢的位置
返回:
point 所在的列索引;如果結果不在 [0, getColumnCount()-1] 範圍內,則返回 -1
另請參見:
rowAtPoint(java.awt.Point)

rowAtPoint

public int rowAtPoint(Point point)
返回 point 所在的行索引;如果結果不在 [0, getRowCount()-1] 範圍內,則返回 -1。

參數:
point - 要查詢的位置
返回:
point 所在的行索引;如果結果不在 [0, getRowCount()-1] 範圍內,則返回 -1
另請參見:
columnAtPoint(java.awt.Point)

getCellRect

public Rectangle getCellRect(int row,
                             int column,
                             boolean includeSpacing)
返回位於 rowcolumn 相交位置的單元格矩形。如果 includeSpacing 為 true,則返回的值具有指定行和列的完整高度和寬度。如果為 false,則返回的矩形為單元格空間減去單元格間的間隙,以便在呈現期間設置該屬性後,返回呈現和編輯的元件的真實邊界。

如果列索引有效但是行索引小於 0,則此方法返回一個矩形,此矩形的 yheight 設置為合適的值,其 xwidth 值都設置為 0。通常,行索引或列索引指示適當區域外的單元格時,此方法都返回一個矩形,它描繪了表範圍內最近單元格的最近邊。當行索引和列索引都超出範圍時,返回的矩形覆寫了最近單元格的最近點。

在所有的情形中,使用此方法沿一個軸的計算結果不會因為沿另一個軸的計算出現異常而失敗。當單元格無效時,忽略 includeSpacing 參數。

參數:
row - 所需單元格所在的行索引
column - 所需單元格所在的列索引;不一定與表中資料模型的列索引相同;convertColumnIndexToView(int) 方法可以用來將資料模型的列索引轉換為顯示的列索引
includeSpacing - 如果為 false,則返回實際的單元格邊界,計算方法是從列模型和行模型的高度和寬度中減去單元格間距
返回:
包含 rowcolumn 處單元格的矩形
另請參見:
getIntercellSpacing()

doLayout

public void doLayout()
使此表佈局其行和列。覆寫的此方法可調整列的大小,以適應包含的父級的大小更改。調整表中一列或多列的大小,以便所有此 JTable 列的總寬度等於表的寬度。

開始佈局之前,此方法獲取 tableHeaderresizingColumn。當由於要調整封閉視窗的大小而調用此方法時,resizingColumnnull。這意味著調整大小發生在 JTable 的“外部”,並且更改(或 "delta" )應該分佈到所有列,無論此 JTable 的自動調整大小網要如何。

如果 resizingColumn 不為 null,則它是發生大小更改的表中的一列,而不是表本身。在這種情況下,自動調整大小網要控制額外(或不足)空間在可用列之間的分佈方式。

該網要有:

註:JTable 調整列寬時,它絕對遵守其最小值和最大值。但是即使在調用此方法後,列的總寬度仍然可能不等於表的寬度。發生這種情況時,JTable 不會進入 AUTO_RESIZE_OFF 網要來產生一個滾動條,或者中斷其當前自動調整網要的其他提交,相反,它允許其邊界設置為大於(或小於)最大總寬度(或最小總寬度),這意味著要麼沒有足夠的空間來顯示所有的列,要麼就是列不能填滿 JTable 的邊界。這將分別導致在繪製期間,某些列將被剪切掉,或者某個區域將被繪製為 JTable 的背景色。

用於在可用列之間分佈 delta 的機制是由 JTable 類別中的一個私有方法提供的:

   adjustSizes(long targetSize, final Resizable3 r, boolean inverse)
 
以下部分是對它的解釋。Resizable3 是一個私有介面,它允許包含元素(具有大小、首選大小、最大大小和最小大小)集合的任何資料結構可以通過該演算法來操作其元素。

分佈 delta

概觀

將 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,這是通過將捨入誤差均勻分散到給定元素上來實作的。

何時選中 MAX 和 MIN 邊界

targetSize 處於 [MIN, MAX] 範圍外時,演算法將所有大小設置為其適合的限定值(最大值或最小值)。

覆寫:
類別 Container 中的 doLayout
另請參見:
LayoutManager.layoutContainer(java.awt.Container), Container.setLayout(java.awt.LayoutManager), Container.validate()

sizeColumnsToFit

@Deprecated
public void sizeColumnsToFit(boolean lastColumnOnly)
已過時。 從 Swing version 1.0.3 開始,由 doLayout() 取代。

調整表列的大小以適合可用的空間。

另請參見:
doLayout()

sizeColumnsToFit

public void sizeColumnsToFit(int resizingColumn)
從 Java 2 平臺 v1.4 開始已過時。請使用 doLayout() 方法。

參數:
resizingColumn - 由於大小的改變導致需要進行此調整的列;如果沒有這樣的列,則為 -1
另請參見:
doLayout()

getToolTipText

public String getToolTipText(MouseEvent event)
覆寫 JComponentgetToolTipText 方法,從而允許使用渲染器的提示(如果設置了文本)。

註:要讓 JTable 正確顯示其渲染器的工具提示,JTable 必須是 ToolTipManager 中的註冊元件。此操作可在 initializeLocalVars 中自動完成,但是如果之後在 JTable 上調用了 setToolTipText(null),則這是一個註銷的表元件,渲染器的提示將不再顯示。

覆寫:
類別 JComponent 中的 getToolTipText
另請參見:
JComponent.getToolTipText()

setSurrendersFocusOnKeystroke

public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
設置由於 JTable 為某個單元格轉發鍵盤事件而導致編輯器被啟動時,此 JTable 中的編輯器是否獲得鍵盤焦點。預設情況下,此屬性為 false,且 JTable 保留焦點,除非單擊了單元格。

參數:
surrendersFocusOnKeystroke - 如果在鍵擊導致編輯器被啟動時編輯器應該獲得焦點,則為 true
從以下版本開始:
1.4
另請參見:
getSurrendersFocusOnKeystroke()

getSurrendersFocusOnKeystroke

public boolean getSurrendersFocusOnKeystroke()
如果在鍵擊導致編輯器被啟動時編輯器應該獲得焦點,則返回 true

返回:
如果在鍵擊導致編輯器被啟動時編輯器應該獲得焦點,則返回 true
從以下版本開始:
1.4
另請參見:
setSurrendersFocusOnKeystroke(boolean)

editCellAt

public boolean editCellAt(int row,
                          int column)
如果 rowcolumn 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。注意,這是 editCellAt(int, int, null) 的一種便捷方法。

參數:
row - 要編輯的行
column - 要編輯的列
返回:
如果由於任何原因而無法編輯該單元格,或者索引無效,則返回 false

editCellAt

public boolean editCellAt(int row,
                          int column,
                          EventObject e)
如果 rowcolumn 位置的索引在有效範圍內,並且這些索引處的單元格是可編輯的,則以程式方式啟動該位置單元格的編輯。要防止 JTable 編輯特定的表、列或單元格的值,TableModel 介面中的 isCellEditable 方法應返回 false。

參數:
row - 要編輯的行
column - 要編輯的列
e - 要傳遞到 shouldSelectCell 中的事件;注意,從 Java 2 平臺 v1.2 開始,不再調用 shouldSelectCell
返回:
如果由於任何原因而無法編輯該單元格,或者索引無效,則返回 false

isEditing

public boolean isEditing()
如果正在編輯單元格,則返回 true。

返回:
如果表正在編輯一個單元格,則返回 true
另請參見:
editingColumn, editingRow

getEditorComponent

public Component getEditorComponent()
返回處理編輯Session的元件。如果沒有編輯任何內容,則返回 null。

返回:
處理編輯Session的 Component

getEditingColumn

public int getEditingColumn()
返回包含當前被編輯的單元格的列索引。如果沒有編輯任何內容,則返回 -1。

返回:
包含當前被編輯的單元格的列索引;如果沒有編輯任何內容,則返回 -1
另請參見:
editingRow

getEditingRow

public int getEditingRow()
返回包含當前被編輯的單元格的行索引。如果沒有編輯任何內容,則返回 -1。

返回:
包含當前被編輯的單元格的行索引;如果沒有編輯任何內容,則返回 -1
另請參見:
editingColumn

getUI

public TableUI getUI()
返回呈現此元件的 L&F 物件。

返回:
呈現此元件的 TableUI 物件

setUI

public void setUI(TableUI ui)
設置呈現此元件並進行重新繪製的 L&F 物件。

參數:
ui - TableUI L&F 物件
另請參見:
UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
UIManager 發出的表明 L&F 已經更改的通知。用 UIManager 的最新版本替換當前的 UI 物件。

覆寫:
類別 JComponent 中的 updateUI
另請參見:
JComponent.updateUI()

getUIClassID

public String getUIClassID()
返回用於建構呈現此元件時所用 L&F 類別名稱的後綴。

覆寫:
類別 JComponent 中的 getUIClassID
返回:
字元串 "TableUI"
另請參見:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

setModel

public void setModel(TableModel dataModel)
將此表的資料模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。

參數:
dataModel - 此表的新資料源
拋出:
IllegalArgumentException - 如果 newModelnull
另請參見:
getModel()

getModel

public TableModel getModel()
返回提供此 JTable 所顯示資料的 TableModel

返回:
提供此 JTable 所顯示資料的 TableModel
另請參見:
setModel(javax.swing.table.TableModel)

setColumnModel

public void setColumnModel(TableColumnModel columnModel)
將此表的列模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。還要將 JTableHeader 的列模型設置為 columnModel

參數:
columnModel - 此表的新資料源
拋出:
IllegalArgumentException - 如果 columnModelnull
另請參見:
getColumnModel()

getColumnModel

public TableColumnModel getColumnModel()
返回包含此表所有列資訊的 TableColumnModel

返回:
提供該表列狀態的物件
另請參見:
setColumnModel(javax.swing.table.TableColumnModel)

setSelectionModel

public void setSelectionModel(ListSelectionModel newModel)
將此表的行選擇模型設置為 newModel,並向其註冊以獲取來自新資料模型的偵聽器通知。

參數:
newModel - 新的選擇模型
拋出:
IllegalArgumentException - 如果 newModelnull
另請參見:
getSelectionModel()

getSelectionModel

public ListSelectionModel getSelectionModel()
返回用來維持行選擇狀態的 ListSelectionModel

返回:
提供行選擇狀態的物件;如果不允許行選擇,則返回 null
另請參見:
setSelectionModel(javax.swing.ListSelectionModel)

sorterChanged

public void sorterChanged(RowSorterEvent e)
RowSorter 以某種方式發生了更改的 RowSorterListener 通知。

指定者:
介面 RowSorterListener 中的 sorterChanged
參數:
e - 描述更改的 RowSorterEvent
拋出:
NullPointerException - 如果 enull
從以下版本開始:
1.6

tableChanged

public void tableChanged(TableModelEvent e)
當此表的 TableModel 產生 TableModelEvent 時調用。應在該模型的坐標系統中建構 TableModelEvent;當此 JTable 接收事件時,它執行到視圖坐標系統的適當映射。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

注意,從 1.3 版本開始,此方法清除選擇(如果有)。

指定者:
介面 TableModelListener 中的 tableChanged

columnAdded

public void columnAdded(TableColumnModelEvent e)
將列添加到表的列模型時調用。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 TableColumnModelListener 中的 columnAdded
另請參見:
TableColumnModelListener

columnRemoved

public void columnRemoved(TableColumnModelEvent e)
從表的列模型中移除列時調用。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 TableColumnModelListener 中的 columnRemoved
另請參見:
TableColumnModelListener

columnMoved

public void columnMoved(TableColumnModelEvent e)
重新定位列時調用。如果正在編輯某個單元格,則停止編輯並重新繪製該單元格。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 TableColumnModelListener 中的 columnMoved
參數:
e - 接收到的事件
另請參見:
TableColumnModelListener

columnMarginChanged

public void columnMarginChanged(ChangeEvent e)
當列由於間距的更改而被移動時調用。如果正在編輯某個單元格,則停止編輯並重新繪製該單元格。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 TableColumnModelListener 中的 columnMarginChanged
參數:
e - 接收到的事件
另請參見:
TableColumnModelListener

columnSelectionChanged

public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel 的選擇模型更改時調用。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 TableColumnModelListener 中的 columnSelectionChanged
參數:
e - 接收到的事件
另請參見:
TableColumnModelListener

valueChanged

public void valueChanged(ListSelectionEvent e)
行選擇更改時調用,重新繪製來顯示新的選擇。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 ListSelectionListener 中的 valueChanged
參數:
e - 接收到的事件
另請參見:
ListSelectionListener

editingStopped

public void editingStopped(ChangeEvent e)
編輯結束時調用。保存更改並丟棄編輯器。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 CellEditorListener 中的 editingStopped
參數:
e - 接收到的事件
另請參見:
CellEditorListener

editingCanceled

public void editingCanceled(ChangeEvent e)
編輯取消時調用。丟棄編輯器物件,並再次呈現單元格。

應用程序程式碼不顯式地使用這些方法,它們由 JTable 在內部使用。

指定者:
介面 CellEditorListener 中的 editingCanceled
參數:
e - 接收到的事件
另請參見:
CellEditorListener

setPreferredScrollableViewportSize

public void setPreferredScrollableViewportSize(Dimension size)
設置此表視口的首選大小。

參數:
size - 指定 JViewport(其視圖為此表)的 preferredSizeDimension 物件
另請參見:
Scrollable.getPreferredScrollableViewportSize()

getPreferredScrollableViewportSize

public Dimension getPreferredScrollableViewportSize()
返回此表視口的首選大小。

指定者:
介面 Scrollable 中的 getPreferredScrollableViewportSize
返回:
包含 JViewport(它顯示此表)的 preferredSizeDimension 物件
另請參見:
Scrollable.getPreferredScrollableViewportSize()

getScrollableUnitIncrement

public int getScrollableUnitIncrement(Rectangle visibleRect,
                                      int orientation,
                                      int direction)
返回完全呈現出一個新行或新列(取決於方向)的滾動增量(以像素為單位)。

使用者每次請求一個單位的滾動時,就調用此方法。

指定者:
介面 Scrollable 中的 getScrollableUnitIncrement
參數:
visibleRect - 視口中可見的視圖區域
orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
direction - 小於 0 向上/左滾動,大於 0 向下/右滾動
返回:
在指定方向滾動的“單位”增量
另請參見:
Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)

getScrollableBlockIncrement

public int getScrollableBlockIncrement(Rectangle visibleRect,
                                       int orientation,
                                       int direction)
返回 visibleRect.heightvisibleRect.width,這取決於此表的方向。注意,從 Swing 1.1.1 (Java 2 v 1.2.2) 開始,返回的值將確保視口在行邊界上完全對齊。

指定者:
介面 Scrollable 中的 getScrollableBlockIncrement
參數:
visibleRect - 視口內可見的視圖區域
orientation - SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。
direction - 小於 0 為向上/左滾動,大於 0 為向下/右滾動。
返回:
每個方向上的 visibleRect.heightvisibleRect.width
另請參見:
Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()
如果 autoResizeMode 設置為 AUTO_RESIZE_OFF,則返回 false,這指示表的寬度不是由視口的寬度決定的。否則返回 true。

指定者:
介面 Scrollable 中的 getScrollableTracksViewportWidth
返回:
如果 autoResizeMode 設置為 AUTO_RESIZE_OFF,則返回 false;否則返回 true
另請參見:
Scrollable.getScrollableTracksViewportWidth()

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()
返回 false 指示表的高度不是由視口的高度決定的,除非 getFillsViewportHeighttrue 並且該表的首選高度小於視口的高度。

指定者:
介面 Scrollable 中的 getScrollableTracksViewportHeight
返回:
false,除非 getFillsViewportHeighttrue 並且需要延伸該表以填充視口
另請參見:
Scrollable.getScrollableTracksViewportHeight(), setFillsViewportHeight(boolean), getFillsViewportHeight()

setFillsViewportHeight

public void setFillsViewportHeight(boolean fillsViewportHeight)
設置此表是否始終大到足以填充封閉視口的高度。如果該表的首選高度小於視口,則將會延伸該表以填充視口。換句話說,此方法確保該表永遠不會小於該視口。此屬性的預設值為 false

參數:
fillsViewportHeight - 此表是否始終大到足以填充封閉視口的高度
從以下版本開始:
1.6
另請參見:
getFillsViewportHeight(), getScrollableTracksViewportHeight()

getFillsViewportHeight

public boolean getFillsViewportHeight()
返回此表是否始終大到足以填充封閉視口的高度。

返回:
此表是否始終大到足以填充封閉視口的高度
從以下版本開始:
1.6
另請參見:
setFillsViewportHeight(boolean)

processKeyBinding

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 - 為下列值之一:
  • JComponent.WHEN_FOCUSED
  • JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
  • JComponent.WHEN_IN_FOCUSED_WINDOW
pressed - 如果鍵被按下,則為 true
返回:
如果有該動作的綁定並且已啟用該動作,則返回 true

createDefaultRenderers

protected void createDefaultRenderers()
為 object、number、double、date、boolean 和 icon 創建預設的單元格渲染器。

另請參見:
DefaultTableCellRenderer

createDefaultEditors

protected void createDefaultEditors()
為 object、number 和 boolean 值創建預設的單元格編輯器。

另請參見:
DefaultCellEditor

initializeLocalVars

protected void initializeLocalVars()
將表的屬性初始化為其預設值。


createDefaultDataModel

protected TableModel createDefaultDataModel()
返回預設的表模型物件,它是一個 DefaultTableModel。子類別可以覆寫此方法以返回不同的表模型物件。

返回:
預設的表模型物件
另請參見:
DefaultTableModel

createDefaultColumnModel

protected TableColumnModel createDefaultColumnModel()
返回預設的列模型物件,它是一個 DefaultTableColumnModel。子類別可以覆寫此方法以返回不同的列模型物件。

返回:
預設的列模型物件
另請參見:
DefaultTableColumnModel

createDefaultSelectionModel

protected ListSelectionModel createDefaultSelectionModel()
返回預設的選擇模型物件,它是一個 DefaultListSelectionModel。子類別可以覆寫此方法以返回不同的選擇模型物件。

返回:
預設的選擇模型物件
另請參見:
DefaultListSelectionModel

createDefaultTableHeader

protected JTableHeader createDefaultTableHeader()
返回預設的表標題物件,它是一個 JTableHeader。子類別可以覆寫此方法以返回不同的表標題物件。

返回:
預設的表標題物件
另請參見:
JTableHeader

resizeAndRepaint

protected void resizeAndRepaint()
等效於先調用 revalidate 再調用 repaint


getCellEditor

public TableCellEditor getCellEditor()
返回活動單元格編輯器;如果該表當前沒有被編輯,則返回 null

返回:
執行編輯操作的 TableCellEditor;如果該表當前沒有被編輯,則返回 null
另請參見:
cellEditor, getCellEditor(int, int)

setCellEditor

public void setCellEditor(TableCellEditor anEditor)
設置活動單元格編輯器。

參數:
anEditor - 活動單元格編輯器
另請參見:
cellEditor

setEditingColumn

public void setEditingColumn(int aColumn)
設置 editingColumn 變數。

參數:
aColumn - 要編輯的單元格所在的列
另請參見:
editingColumn

setEditingRow

public void setEditingRow(int aRow)
設置 editingRow 變數。

參數:
aRow - 要編輯的單元格所在的行
另請參見:
editingRow

getCellRenderer

public TableCellRenderer getCellRenderer(int row,
                                         int column)
返回適於由此行和列所指定單元格的渲染器。如果此列的 TableColumn 有一個非 null 的渲染器,則返回它。如果沒有,則尋找此列中的資料類別(使用 getColumnClass),並返回此資料型別的預設渲染器。

註:在整個表的套件中,內部實作始終使用此方法來提供渲染器,以便子類別能夠安全地覆寫此預設行為。

參數:
row - 要呈現的單元格所在的行,其中第一行為 0
column - 要呈現的單元格所在的列,其中第一列為 0
返回:
已分派的渲染器;如果為 null,則返回此型別物件的預設渲染器
另請參見:
DefaultTableCellRenderer, TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer), setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)

prepareRenderer

public Component prepareRenderer(TableCellRenderer renderer,
                                 int row,
                                 int column)
通過查詢 rowcolumn 處單元格值的資料模型和單元格選擇狀態來準備渲染器。返回事件所在的元件(可能是 ComponentJComponent)。

列印操作期間,此方法將配置不指示選擇和焦點的渲染器,以防止它們出現在列印輸出中。要執行基於該表是否列印的其他定制,可以檢查 JComponent.isPaintingForPrint() 的值(在此處或者在自定義渲染器中)。

註:在整個表的套件中,內部實作始終使用此方法來準備渲染器,以便子類別能夠安全地覆寫此預設行為。

參數:
renderer - 要準備的 TableCellRenderer
row - 要呈現的單元格所在的行,其中第一行為 0
column - 要呈現的單元格所在的列,其中第一列為 0
返回:
事件所在的 Component

getCellEditor

public TableCellEditor getCellEditor(int row,
                                     int column)
返回適用於由 rowcolumn 所指定單元格的編輯器。如果此列的 TableColumn 有一個非 null 的編輯器,則返回它。如果沒有,則尋找此列中的資料類別(使用 getColumnClass),並返回此型別資料的預設編輯器。

註:在整個表的套件中,內部實作始終使用此方法來提供編輯器,以便子類別能夠安全地覆寫此預設行為。

參數:
row - 要編輯的單元格所在的行,其中第一行為 0
column - 要編輯的單元格所在的列,其中第一列為 0
返回:
此單元格的編輯器;如果為 null,則返回此型別單元格的預設編輯器
另請參見:
DefaultCellEditor

prepareEditor

public Component prepareEditor(TableCellEditor editor,
                               int row,
                               int column)
通過查詢 rowcolumn 處單元格值的資料模型和單元格選擇狀態來準備編輯器。

註:在整個表的套件中,內部實作始終使用此方法來準備編輯器,以便子類別能夠安全地覆寫此預設行為。

參數:
editor - 要設置的 TableCellEditor
row - 要編輯的單元格所在的行,其中第一行為 0
column - 要編輯的單元格所在的列,其中第一列為 0
返回:
被編輯的 Component

removeEditor

public void removeEditor()
丟棄編輯器對象並釋放它用於單元格呈現的資源。


paramString

protected String paramString()
返回此表的字元串表示形式。此方法僅在進行除錯的時候使用,對於各個實作,所返回字元串的內容和格式可能有所不同。返回的字元串可以為空,但不可以為 null

覆寫:
類別 JComponent 中的 paramString
返回:
此表的字元串表示形式

print

public boolean print()
              throws PrinterException
一個便捷的方法,它顯示一個列印對話框,然後以 PrintMode.FIT_WIDTH 網要列印此 JTable,不列印標題或腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。

註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。

返回:
除非使用者取消了列印,否則返回 true
拋出:
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止
從以下版本開始:
1.5
另請參見:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

public boolean print(JTable.PrintMode printMode)
              throws PrinterException
一個便捷的方法,它顯示一個列印對話框,然後以給定的列印網要列印此 JTable,不列印標題或腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。

註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。

參數:
printMode - printable 應使用的列印網要
返回:
除非使用者取消了列印,否則返回 true
拋出:
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止
從以下版本開始:
1.5
另請參見:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

public boolean print(JTable.PrintMode printMode,
                     MessageFormat headerFormat,
                     MessageFormat footerFormat)
              throws PrinterException
一個便捷的方法,它顯示一個列印對話框,然後以給定的列印網要列印此 JTable,列印指定的標題和腳注文本。列印期間將顯示一個有網要的進度對話框(帶有中止選項)。

註:在 headless 網要中,不顯示對話框並且列印在預設印表機上進行。

參數:
printMode - printable 應使用的列印網要
headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 null
footerFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 null
返回:
除非使用者取消了列印,否則返回 true
拋出:
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止
從以下版本開始:
1.5
另請參見:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

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 - 是否以交互網要列印
返回:
true,除非使用者取消了列印
拋出:
HeadlessException - 如果要求方法顯示列印對話框或交互運行,並且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果不允許此執行緒啟動列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止
從以下版本開始:
1.5
另請參見:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

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,表示使用預設印表機
返回:
除非使用者取消了列印,否則返回 true
拋出:
HeadlessException - 如果要求方法顯示列印對話框或交互運行,並且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果安全管理器存在並且其 SecurityManager.checkPrintJobAccess() 方法不允許此執行緒創建列印作業請求
PrinterException - 如果列印系統的錯誤導致列印作業中止
從以下版本開始:
1.6
另請參見:
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat), GraphicsEnvironment.isHeadless()

getPrintable

public Printable getPrintable(JTable.PrintMode printMode,
                              MessageFormat headerFormat,
                              MessageFormat footerFormat)
返回列印此 JTable 中所使用的 Printable

此方法用於希望定制 JTableprint 方法所使用的預設 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 限制向它列印的每一頁的可列印區域所繪製的內容。在某些情況下,可能看到該區域不可能放入所有頁的內容。在這種情況下,可以截取輸出,但實作將採取一些合理的行為。以下是幾種已知會發生的情況,以及如何通過此特定實作來處理它們:

將此 Printable 套件裝到另一個 Printable 中是完全有效的,這可以用來創建複雜的報告和文檔。甚至可以請求將不同的頁呈現到不同大小的可列印區域中。必須準備好讓實作處理此問題(可能通過其佈局計算動態完成)。但是,當必須跨頁分散列時,為每頁提供不同的高度可能無法與 PrintMode.NORMAL 正常工作。

至於定制列印結果中表的外觀的資訊,JTable 自身將在列印期間負責隱藏選擇和焦點。對於其他定制,使用者的渲染器或繪製網要可以定制基於 JComponent.isPaintingForPrint() 值的外觀。

此外,調用此方法之前,可以首先 修改該表的狀態,例如取消單元編輯或者讓使用者恰當地調整表的大小。但是,在獲取此 Printable 之後,不得再修改該表的狀態(無效的修改包括在大小或底層資料方面的修改)。如果更改了該表,返回 Printable 的行為將是不確定的。

參數:
printMode - printable 應使用的列印網要
headerFormat - 指定在列印標題中所用文本的 MessageFormat,如果沒有則為 null
footerFormat - 指定在列印腳注中所用文本的 MessageFormat,如果沒有則為 null
返回:
用於列印此 JTable 的 Printable
從以下版本開始:
1.5
另請參見:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean), Printable, PrinterJob

getAccessibleContext

public AccessibleContext getAccessibleContext()
獲取與此 JTable 關聯的 AccessibleContext。對於表,AccessibleContext 採用 AccessibleJTable 的形式。必要時創建新的 AccessibleJTable 實例。

指定者:
介面 Accessible 中的 getAccessibleContext
覆寫:
類別 JComponent 中的 getAccessibleContext
返回:
一個 AccessibleJTable,它充當此 JTable 的 AccessibleContext

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only