java表格 排序器_Java Swing表格多列排序

  • Post author:
  • Post category:java


Java Swing JTable开启排序功能只需一个调用:

JTable table = new JTable();

table.setAutoCreateRowSorter(true);

但这个排序功能只支持单列排序,而多列排序需要自己实现。

本文内容是使用sorter和renderer实现点击表头进行多列排序,第一次点击的列作为主排序列,后点击的列作为次排序列。建议在开始阅读本文前可以看看官方教程《How to Use Tables》,对JTable的sorter和renderer有个概念。

分析

TableRowSorter对象已经提供了多列排序的功能:

TableRowSorter sorter

= new TableRowSorter(table.getModel());

table.setRowSorter(sorter);

List sortKeys

= new ArrayList();

sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING));

sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));

sorter.setSortKeys(sortKeys); // 执行排序

上面是把第1列作为主排序列升序排序,把第0列作为次排序列降序排序。

表格的表头由JTableHeader对象维护,该对象里维护着BaseTableHeaderUI对象,这个对象里设置了mouseInputListener监听器进行监听,当点击表头后就通知该监听器调用sorter.toggleSortOrder方法进行排序。所以我们需要继承T



版权声明:本文为weixin_31934101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。