java代码创建表 怎么用java编写一个表格( 三 )


表格的弹性 。我们下面就先对 TableModel 来
做介绍:
TableModel
TableModel类本身是一个interface,在这个interface里面定义了若干的方法:包括了存取表
格字段(cell)的内容、计算表格的列数等等的基本存取操作,让设计者可以简单地利用
TableModel 来实作他所想要的表格 。TableModel 界面是放在 javax.swing.table package 中,
这个 package 定义了许多 JTable 会用到的各种 Model,读者可利用 java api 文件找到这个
package,并由此 package 找到各类或界面所定义的方法 。
TableModel 方法:
void addTableModelListener(TableModelListener l):使表格具有处理 TableModelEvent 的能
力 。当表格的 Table Model 有所变化时,会发出 TableModel Event 事件信息.
Class getColumnClass(int columnIndex):返回字段数据类型的类名称.
intgetColumnCount():返回字段(行)数量.
StringgetColumnName(int columnIndex):返回字段名称.
intgetRowCount():返回数据列数量.
ObjectgetValueAt(int rowIndex,int columnIndex):返回数据某个 cell 中的值.
booleanisCellEditable(int rowIndex,int columnIndex):返回cell是否可编辑,true的话
为可编辑.
voidremoveTableModelListener(TableModelListener l):从 TableModelListener 中
移除一个 listener.
voidsetValueAt(Object aValue,int rowIndex,int columnIndex): 设 置 某 个
cell(rowIndex,columnIndex)的值;
由于TableModel本身是一个Interface,因此若要直接实现此界面来建立表格并不是件轻松
的事.幸好 java 提供了两个类分别实现了这个界面,一个是 AbstractTableModel 抽象类,一个是
DefaultTableModel 实体类.前者实现了大部份的 TableModel 方法,让用户可以很有弹性地构
造自己的表格模式;后者继承前者类,是 java 默认的表格模式.这三者的关系如下所示:
TableModel---implements---AbstractTableModel-----extends---DefaultTableModel
AbstractTableModel:
java 提供的 AbstractTableModel 是一个抽象类,这个类帮我们实现大部份的 TableModel 方
法,除了 getRowCount(),getColumnCount(),getValueAt()这三个方法外.因此我们的主要任务就
是去实现这三个方法.利用这个抽象类就可以设计出不同格式的表格.我们来看看它所
提供的方法:
AbstractTableModel 方法:
void addTableModelListener(TableModelListener l):使表格具有处理 TableModelEvent 的能
力.当表格的 Table Model 有所变化时,会发出 TableModelEvent 事件信息.
int findColumn(String columnName):寻找在行名称中是否含有 columnName 这个项目.若
有,则返回其所在行的位置;反之则返回-1 表示
void fireTableCellUpdated(int row, int column):通知所有的 Listener 在这个表格中的
(row,column)字段的内容已经改变了.
void fireTableChanged(TableModelEvent e):将所收的事件通知传送给所有在这个 table
model 中注册过的 TableModelListeners.
void fireTableDataChanged():通知所有的 listener 在这个表格中列的内容已经改变了.列的
数目可能已经改变了,因此 JTable 可能需要重新显示此表格的结构.
void fireTableRowsDeleted(int firstRow, int lastRow):通知所有的 listener 在这个表格中第
firstrow 行至 lastrow 列已经被删除了.
void fireTableRowsUpdated(int firstRow, int lastRow):通知所有的 listener 在这个表格中第
firstrow 行至 lastrow 列已经被修改了.
void fireTableRowsInserted(int firstRow, int lastRow):通知所有的 listener 在这个表格中第
firstrow 行至 lastrow 列已经被加入了
.
void fireTableStructureChanged():通知所有的listener在这个表格的结构已经改变了.行的数
目,名称以及数据类型都可能已经改变了
.
Class getColumnClass(int columnIndex):返回字段数据类型的类名称.

推荐阅读