目录
- 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