我目前正在使用JTable上使用以下方法来在列上获得自动排序

table.setAutoCreateRowSorter(true);

目前,我可以单击每个标头,而相应的列将对任何字母进行排序。当它试图对具有整数的列进行排序时,它会混乱。它似乎一次是对每个数字进行排序,而不是按实际数字进行排序。例如,它会说8大于100,因为8大于1。我有没有某种方法可以覆盖这种行为?

有帮助吗?

解决方案

当它试图对具有整数的我的列进行排序时,它会混乱

可能是因为:

  1. 您将数字存储为字符串,或者
  2. 您将数据存储为整数对象,但您没有覆盖 getColumnClass() tablememodel返回的方法 Integer.class 对于该列。仅当您的列类正确时,才会使用适当的比较器。

请参阅《秋千教程》中的部分 概念:渲染器和编辑 有关更多信息以及如何覆盖GetColumnClass()方法的示例。

其他提示

您可能需要使用特定比较器设置一个行选项器:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top