[原创]Java技巧:分布式Jtables处理[2]
资料一般的table要求可以按照列的升序或者降序分类。Jtbale组成部分没有固定的功能分类;它必须以TableModel执行方式被执行(见:http://www.javaworld.com/javaworld/javatips/jw-javatip137.html?#resources#resources)。必须拥有所有马上用于分类的数据。由于所有的数据都在服务器上,分类必须在服务器上进行。通过DistributedTableDataSource接口发送一个分类消息给服务器实现以具体某行的升序或者降序排序操作是很方便的。可以使用SQL ORDER操作员可以实现手动分类或者数据库复杂操作。,客户端的数据缓存将被无效,并且table被更新。JTable降立即请求填充在显示的table部分。这降引发服务器端新数据的从新下载。
在排序处理中,出现了一个问题。用户选择的行发生了什么?当然放弃那些选择的部分是不被接受的。在JTable 中,通过使用记录了选择的行索引的ListSelectionModel接口,选择操作被执行。如果由于执行一个选择改变了TbaleModel后台的数据,ListSelectionModel将没有关于新的选择部分的索引信息,并且选择将会包括一部分旧的数据。无论如何,如果知道选择部分新的行索引,就可以执行手动的操作。在排列操作之前,记录选择的行。在排列操作之后,table选择清楚然后选裥行碌乃饕柚迷贚istSelectionModel里面。在DistributedTableDataSource接口中的排列方法采取下面的形式:
int[] sort(int sortColumn, boolean ascending, int[] selectedRows) throws Exception
沿着排序的列,采取上升顺序,必须天上选择的行索引,然后返回排序数据相应的索引。三个方法用于完整执行排序方法:setSelectedRowsAndColumns(),getSelectedRows()和getSelectedColumns()。这些方法在服务器和客户端之间同步保持选择部分。
图3 排序和选择操作的流程图
520)this.width=520;" style="CURSOR: hand" onclick=javascript:window.open(this.src); src="http://www.javaworld.com/javaworld/javatips/images/jw-javatip137f3.jpg" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
图 3 分布式JTable的排序操作
简单化table操作下面描述了一种方法,这种方法可以快速显示一个table,而不用等待下载大块的数据。如果用户向下滚动整个table,所有的数据都必须快速或者缓慢的下载。但是,在下载所有的数据和快速显示之间总是有一个平衡的。这个技巧方法拥有下面的好处:
· Table组成部分快速显示
· 客户端程序不使用过多的内存,因为客户端只是存储了少数的数据
· 一个table或者电子表格的丰富接口被保持
· 当用户对某行以后的数据不感兴趣的时候,数据源不用花费过多的资源用于数据下载。
在演示中,一个客户端包含了只读的可排序的JTable,它包括了200,000行数据,这些数据是作为XML从servlset得到的,它们存储在一个分布式表模式DistributedTableModel中。通过扩展这个演示,可以轻易的实现单元选择,数据编辑,等等。
本文地址:http://com.8s8s.com/it/it15806.htm