【问题标题】:Multiple column sort in JTableJTable中的多列排序
【发布时间】:2008-09-21 02:13:04
【问题描述】:

我知道JTable 可以按单列排序。但是是否可以允许多列排序或者我需要自己编写代码?

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    在您正在使用的RowSorter 中调用setSortKeys 时,您可以通过指定多个排序键来按多列排序。

    【讨论】:

    • 可惜java5没有这个功能
    【解决方案2】:

    查看JXTable。 JXTable 是 JTable 的扩展,支持多列排序,以及 JTable 不提供的其他功能。它可从 JDNC / SwingLabs 免费获得。

    【讨论】:

    • 你确定吗?实际上 JXTable API 声明:“排序支持仅是单列。”
    • 好的,但它适用于过滤器。您只需将梭式分拣机放入过滤管道
    【解决方案3】:

    您应该能够设置 TableRowSorter 和与之关联的 Comparator。 示例:

    TableModel myModel = createMyTableModel();
    JTable table = new JTable(myModel);
    TableRowSorter t = new TableRowSorter(myModel);
    t.setComparator(column that the comparator works against, Comparator<?> comparator);
    table.setRowSorter(new TableRowSorter(myModel));
    

    【讨论】:

    • 与多列排序无关
    【解决方案4】:

    来自 netbeans 集合的 ETable。
    它是 org-netbeans-swing-outline.jar 的一部分
    谷歌搜索可以打开它。 ETable 主要是 Outline(TreeTable)的基础,但它内置了多列排序以及许多其他不错的功能

    【讨论】:

      【解决方案5】:

      “我知道Jtable可以按单列排序。但是是否可以允许多列排序或者我需要自己编写代码?”

      表格排序和过滤由排序器对象管理。提供 sorter 对象的最简单方法是将 autoCreateRowSorter 绑定属性设置为 true;

      JTable table = new JTable();
      table.setAutoCreateRowSorter(true);
      

      此操作定义了一个行排序器,它是 javax.swing.table.TableRowSorter 的一个实例。

      【讨论】:

      • no 是错误的 - JTable 绝对支持多列排序(参见另一个答案中提到的 setSortKeys),仅在主排序列上显示视觉线索
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      相关资源
      最近更新 更多