我目前正在我的 JTable 上使用以下方法来对列进行自动排序
table.setAutoCreateRowSorter(true);
这目前允许我单击每个标题,相应的列将对任何带有字母的内容进行排序。 当它尝试对具有整数的列进行排序时,它会搞砸。 它似乎一次对每个数字进行排序,而不是按实际数字排序。 例如,它会说 8 大于 100,因为 8 大于 1。 有什么方法可以覆盖此行为吗?
当它尝试对具有整数的列进行排序时,它会搞砸
可能是因为:
- 您将数字存储为字符串,或者
- 您将数据存储为 Integer 对象,但未重写 TableModel 的
getColumnClass()
方法来返回该列的Integer.class
。只有当您的列类正确时,才会使用正确的比较器。
请参阅 Swing 教程中关于概念:渲染器和编辑器的部分,以获取更多信息以及如何重写 getColumnClass() 方法的示例。
您可能需要使用特定的比较器设置行排序器:
Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);
在这里可以找到有关比较器及其可能问题的更多信息。但是,@camickr正确的是,如果列类设置正确,则通常不需要 Integer。