当它试图对具有整数的我的列进行排序时,它会混乱
可能是因为:
- 您将数字存储为字符串,或者
- 您将数据存储为整数对象,但您没有覆盖
getColumnClass()
tablememodel返回的方法Integer.class
对于该列。仅当您的列类正确时,才会使用适当的比较器。
请参阅《秋千教程》中的部分 概念:渲染器和编辑 有关更多信息以及如何覆盖GetColumnClass()方法的示例。
题
我目前正在使用JTable上使用以下方法来在列上获得自动排序
table.setAutoCreateRowSorter(true);
目前,我可以单击每个标头,而相应的列将对任何字母进行排序。当它试图对具有整数的列进行排序时,它会混乱。它似乎一次是对每个数字进行排序,而不是按实际数字进行排序。例如,它会说8大于100,因为8大于1。我有没有某种方法可以覆盖这种行为?
解决方案
当它试图对具有整数的我的列进行排序时,它会混乱
可能是因为:
getColumnClass()
tablememodel返回的方法 Integer.class
对于该列。仅当您的列类正确时,才会使用适当的比较器。请参阅《秋千教程》中的部分 概念:渲染器和编辑 有关更多信息以及如何覆盖GetColumnClass()方法的示例。
其他提示
您可能需要使用特定比较器设置一个行选项器:
Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);
这里 可以找到有关比较器以及可能的问题的更多信息。但是,@camickr也是正确的,如果正确设置了列类,则通常不需要整数。