3 在表模型中应用反射机制
了解反射机制的一些基本用法后,把它应用到一个具体实例中,来充分感受一下它的精妙之处。将建立一个如图1所示的维护客户信息表的应用程序。
图1
在图1所示的应用程序中,显示了一个客户信息表,并可以完成对客户资料的增加、修改、删除等操作。表面看起来,与其他的应用程序并没有什么区别,但由于它的表模型中使用了反射机制,因此对表的操作变得非常简便。在以前对表的初始化操作经常需要大量的Java语句,但在此例中只需如下几行代码:
String[] colsName = new String[]{"编码", "名称", "联系人", "联系电话"…}; //列名
String[] propertiesName = new String[]{"code","name","contectPerson","tel"…};//属性数组
RefTableMode tmItem=new RefTableModel(colsName,propertiesName); //构建表模型实例
lstCustomer = new java.util.ArrayList();
lstCustomer.add(new Customer(1, "C - 01", "沈阳司南", "袁浪"…));
lstCustomer.add(new Customer(2, "C - 02", "恒远电子", "张明"…));
tmItem.init(this.lstCustomer); //初始化表模型
在研究应用反射机制的表模型前,先来看一下javax.swing.table.DefaultTableModel,它有一个insertRow(int row, Object[] rowData)方法可以向表模型中插入一条记录。表模型(RefTableModel)即是利用反射机制由客户实例及客户属性数组(propertiesName)形成一个Object[]型的rowData,再调用insertRow()方法将其加入到表模型中。下面是RefTableModel的主要代码:
|