除此之外,如果我们所要显示的数据是不固定的,或是随情况而变,例如同样是一份成
绩单,老师与学生所看到的表格就不会一样,显示的外观或操作模式也许也不相同。为了
因应这些种种复杂情况,上面简单的构造方式已不宜使用, Swing 提供各种 Model(如:
TableModel、TableColumnModel 与 ListSelectionModel)来解决上述的不便,以增加我们设计
表格的弹性。我们下面就先对 TableModel 来做介绍:
2、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):返回字段数据类型的类名称。
int!getColumnCount():返回字段(行)数量.
String!getColumnName(int!columnIndex):返回字段名称.
int!getRowCount():返回数据列数量.
Object!getValueAt(int!rowIndex,int!columnIndex):返回数据某个 cell 中的值.
boolean!isCellEditable(int!rowIndex,int!columnIndex):返回 cell 是否可编辑,true 的话为可编
辑.
void!removeTableModelListener(TableModelListener!l): 从 TableModelListener 中 移 除 一 个
listener.
void!setValueAt(Object!aValue,int!rowIndex,int!columnIndex): 设 置 某 个
cell(rowIndex,columnIndex)的值;
由于 TableModel 本身是一个 Interface,因此若要直接实现此界面来建立表格并不是件轻松
的事.幸好 java 提供了两个类分别实现了这个界面,一个是 AbstractTableModel 抽象类,一个是
DefaultTableModel 实体类.前者实现了大部份的 TableModel 方法,让用户可以很有弹性地构
造自己的表格模式;后者继承前者类,是 java 默认的表格模式.这三者的关系如下所示:
TableModel---implements--->AbstractTableModel-----extends--->DefaultTableModel
3、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!mode
l 中注册过的 TableModelListeners。
评论0
最新资源