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