接下來講下程序右側的文件內容表格如何實現數組
FileTable類:app
FileTable基礎於JTable類,構造函數裏用setDefaultRenderer設置每行默認的渲染器爲FileTableCellRenderer(下面會說如何實現)ide
setAutoCreateRowSorter(true)函數自動建立一個默認的排序篩選器,等同於:setRowSorter(new TableRowSorter(model))
函數
RowSorter:
默認狀況下,若是啓用排序,那麼排序時 JTable
將保留基於模型的選擇和可變行高度。例如,若是當前選擇行 0(就底層模型而言),那麼排序以後將選擇行 0(就底層模型而言)。選擇有可能看起來被更改了,但就底層模型而言它仍然保持不變。模型索引再也不可見或者被移除時除外。例如,若是行 0 被過濾掉了,那麼選擇在排序後將爲空。 this
this.setShowHorizontalLines(false);和this.setShowVerticalLines(false);設置表格中不繪製單元格周圍的橫向和縱向網格線url
FileTableCellRenderer類:spa
FileTableCellRenderer繼承與TableCellRenderer ,返回用於繪製單元格的組件。此方法用於在繪製前適當地配置渲染器。 code
主要目的是重載getTableCellRendererComponent(),裏面根據不一樣列,顯示不一樣數據。如第0列顯示文件圖標和文件名,第二列顯示文件修改時間,第三列顯示文件類型,第四列顯示文件大小orm
FileTableModel 類:
FileTable繼承與DefaultTableModel類
靜態變量tableHeader 存儲的是表格標題
DefaultTableModel有4種構造函數, 這裏我選擇第三種,經過數據的二維數組和表頭數組來初始化
DefaultTableModel() 構造默認的 DefaultTableModel ,它是一個零列零行的表。 |
DefaultTableModel(int rowCount, int columnCount) 構造一個具備 rowCount 行和 columnCount 列的 null 對象值的 DefaultTableModel 。 |
DefaultTableModel(Object[][] data, Object[] columnNames) 構造一個 DefaultTableModel ,並經過將 data 和 columnNames 傳遞到 setDataVector 方法來初始化該表。 |
DefaultTableModel(Object[] columnNames, int rowCount) 構造一個 DefaultTableModel ,它的列數與 columnNames 中元素的數量相同,並具備 rowCount 行 null 對象值。 |
DefaultTableModel(Vector columnNames, int rowCount) 構造一個 DefaultTableModel ,它的列數與 columnNames 中元素的數量相同,並具備 rowCount 行 null 對象值。 |
DefaultTableModel(Vector data, Vector columnNames) 構造一個 DefaultTableModel ,並經過將 data 和 columnNames 傳遞到 setDataVector 方法來初始化該表。 |
經過重載getValueAt()函數,返回對應行列的值。重載CellEditable() 試其返回false 讓表格內容不能被編輯。
本文連接: http://www.bugcoding.com/entry/16
版權全部。轉載時必須以連接形式註明做者和原始出處及本聲明。