<java> <JTable> 关于设置JTable导入数据后自动排序-小记
来源:互联网 发布:桌子高度 知乎 编辑:程序博客网 时间:2024/06/15 23:00
在最近的一个程序中,遇到这么一个问题,实现JTable的导入数据,并带有添加,删除,修改等功能。基本功能实现后,由于程序方面的需要,保证程序的实用性,需要添加新功能:导入JTable的数据之后,或者添加,删除之后使JTable能自动进行排序。查阅相关资料后,以下相关实现方法:
首先需要对Table添加TableRowSorter。这一步很简单,部分code如下:
sorter = new TableRowSorter<HistroyDataTableMode>(histroyDataTableMode); // 设置只有第一列可以排序,其他均不可以 sorter.setSortable(0, true); for(int i=1; i<8; i++) { sorter.setSortable(i, false); } histroyDataTable.setRowSorter(sorter);
添加上面的代码之后,此时的JTable应该就具备点击表头实现排序的功能了,当然本程序需要的JTable自动排序。百度,谷歌也没有人有过这样的写法,查阅API及相关资料后看到TableRowSorter有这么一个API:
setSortKeys
public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
- 设置排序键。此方法创建所提供
List
的一个副本;对所提供List
的后续更改不影响此DefaultRowSorter
。如果排序键已更改,则此方法触发一个排序。 - 指定者:
- 类
RowSorter<M>
中的setSortKeys
- 参数:
sortKeys
- 新的SortKey
;null
是指定一个空列表的简单表示方法,表示视图应该是未排序的。- 抛出:
IllegalArgumentException
- 如果sortKey
中的任一值为 null,或者有超出模型范围的列索引
public SortKey(int column, SortOrder sortOrder) { if (sortOrder == null) { throw new IllegalArgumentException( "sort order must be non-null"); } this.column = column; this.sortOrder = sortOrder; }
SortOrder参数跟踪进去:
public enum SortOrder { /** * Enumeration value indicating the items are sorted in increasing order. * For example, the set <code>1, 4, 0</code> sorted in * <code>ASCENDING</code> order is <code>0, 1, 4</code>. */ ASCENDING, /** * Enumeration value indicating the items are sorted in decreasing order. * For example, the set <code>1, 4, 0</code> sorted in * <code>DESCENDING</code> order is <code>4, 1, 0</code>. */ DESCENDING, /** * Enumeration value indicating the items are unordered. * For example, the set <code>1, 4, 0</code> in * <code>UNSORTED</code> order is <code>1, 4, 0</code>. */ UNSORTED}这下真相大白了,setSortKeys的参数是一个List,List类型是RowSorter.SortKey,SortKey的构造方法是一个列加上一个排序类型,那代码应如:
// 设置排序建 List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>(); sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); sorter.setSortKeys(sortKeys);
当然,sortKeys是一个列,他可以add多个排序方式,按照我的理解,应该是优先使用第0个排序的方式,若有相同的,则继续按照第1个排序方式,以此类推。我这里仅仅是对0做了升序的排序,其他的应该都是一样。
哦,对了,需要注意的是setSortKeys这个方法的参数是可以为null,为null的意思则是不做排序。
0 0
- <java> <JTable> 关于设置JTable导入数据后自动排序-小记
- JAVA JTable 关于表格初始化设置、表格事件监听及数据更新问题
- java JTable表头自动换行
- java JTable表格自动换行
- JTable排序
- jtable排序
- java JTable 动态拉取数据显示及自动刷新
- java JTable表头属性设置
- 关于jtable
- 关于jTable
- 关于 JTable 刷新绘制(repaint) 以及JTable各属性设置
- java JTable数据居中显示
- 关于ResultSet导入JTable中的问题
- jtable排序后的索引问题
- JDK1.6 对于JTable 的自动排序
- jtable
- JTable
- JTable
- C++经典笔试题
- 视频宽高比 PAR DAR SAR 详解
- [Python]解析.ini 文件出错ConfigParser.MissingSectionHeaderError: File contains no section headers.
- URI和URL的区别
- SOCKET 网络编程(1) TCP部分
- <java> <JTable> 关于设置JTable导入数据后自动排序-小记
- java.lang.IllegalStateException错误原因以及解决方法
- 使用JavaService生成windows服务
- JAVA的网络编程【转】
- iPhone 的.m文件解释
- 银行神秘顾客调查的内容-监测对象
- paip.Log4j配置不起作用的解决
- html5 语义标签理解 整理2 [
- samb服务器配置