繁体   English   中英

使用JTable的默认列排序器对整数排序?

[英]Sorting integers with JTable's default column sorter?

我目前在JTable上使用以下方法来对列进行自动排序

table.setAutoCreateRowSorter(true);

当前,这使我可以单击每个标题,并且相应的列将按字母排序。 当它尝试对具有整数的列进行排序时,情况变得一团糟。 它似乎是一次对每个数字进行排序,而不是按实际数字进行排序。 例如,它将说8大于100,因为8大于1。是否有某种方法可以覆盖此行为?

尝试对具有整数的列进行排序时,情况变得混乱

可能是因为:

  1. 您将数字存储为字符串,或者
  2. 您将数据存储为Integer对象,但是没有重写TableModel的getColumnClass()方法来为该列返回Integer.class 仅当您的列类正确时,才使用正确的Comparator。

有关更多信息,以及有关如何重写getColumnClass()方法的示例,请参见Swing教程中有关“ 概念:渲染器和编辑器”的部分。

您可能需要使用特定的比较器设置行排序器:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

在这里可以找到更多有关比较器及其可能出现的问题的信息。 但是,@ camickr也是正确的,如果正确设置了列类,则通常不需要Integer。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM