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



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

table.setAutoCreateRowSorter(true);

这目前允许我单击每个标题,相应的列将对任何带有字母的内容进行排序。 当它尝试对具有整数的列进行排序时,它会搞砸。 它似乎一次对每个数字进行排序,而不是按实际数字排序。 例如,它会说 8 大于 100,因为 8 大于 1。 有什么方法可以覆盖此行为吗?

当它尝试对具有整数的列进行排序时,它会搞砸

可能是因为:

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新