目录

  • Java Swing中表格的用法
  • JTable
  • DefaultTableModule
  • TableCellRenderer


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