Java Swing中的表格JTable

Java Swing中表格的用法

☆JTable是一個JComponent。

☆JComponent是除頂層容器外所有 Swing 組件的基類,要使用繼承自 JComponent 的組件,必須將該組件置於一個根爲頂層 Swing 容器的包含層次結構(containment hierarchy)中。

☆頂層 Swing 容器(如 JFrame、JDialog 和 JApplet)是專門爲其他 Swing 組件提供繪製自身場所的組件。

☆TableModel 接口指定了 JTable 用於詢問表格式數據模型的方法。只要數據模型實現了 TableModel 接口,就可以通過以下兩行代碼設置 JTable 顯示該模型:

    TableModel myData = new MyTableModel(); 
    JTable table = new JTable(myData);

☆TableModel的所有已知實現類: AbstractTableModel, DefaultTableModel

☆如果要在單獨的視圖中(在 JScrollPane 外)使用 JTable 並顯示錶標題,則可以使用 getTableHeader() 獲取並單獨顯示它。

JFrame的繼承結構關係 JTable的繼承結構關係 DefaultTableModel的繼承結構關係
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTable
java.lang.Object
javax.swing.table.AbstractTableModel
javax.swing.table.DefaultTableModel
1 2 3

JTable

表格是GUI編程中使用較多,但也是最麻煩的一個控件之一。表格是用來顯示二維數據,提供編輯,選擇等功能。如果只是顯示數據,這還是非常easy的,只要在JTable中傳入二維數組或集合就可以了:
1、設置一個 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);

DefaultTableModule

☆DefaultTableModule 是 TableModel 的一個實現,它使用一個 Vector 來存儲單元格的值對象,該 Vector 由多個 Vector 組成。

☆DefaultTableModel 返回 Object 的一個列類。DefaultTableModel 與 TableRowSorter 一起使用時將導致大量使用 toString,這對於非 String 數據類型代價昂貴。如果與 TableRowSorter 一起使用 DefaultTableModel,建議最好重寫 getColumnClass 以返回適當的類型。

☆此類的序列化對象與以後的 Swing 版本不兼容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行遠程方法調用(Remote Method Invocation,RMI)。從 1.4 版本開始,已在 java.beans 包中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder。

TableCellRenderer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章