jtable

jtable

JTable 用來顯示和編輯常規二維單元表。有關面向任務的文檔和使用 JTable 的示例,請參閱 The Java Tutorial 中的 How to Use Tables 一節。

基本信息

JTableextends JComponentimplements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListener

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 的坐標轉換為底層模型的坐標

欄位摘要

欄位摘要
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 所組成的 VectorrowData 中的值,其列名稱為 columnNames。

 

相關詞條

相關搜尋

熱門詞條

聯絡我們