JTable对未显示的值进行排序

时间:2018-08-28 18:16:11

标签: java swing jtable

我有一个包含多个列的JTable,这些列之一包含一个人的年龄,但是当那个人的出生日期比它显示为'20(+1)'时,因此此列来自输入字符串。

这会导致在排序JTable时出现问题,因为您将按照以下年龄对它进行排序: 2 21 24 3 34 38 5 60

虽然我想根据人员年龄值对其进行扭曲,该值以整数形式存储在人员对象中,该对象应具有以下顺序: 2 3 5 21 24 34 38 60

我当然可以删除'(+1)'部分,但这是一个很好的功能,用于指示该单元格中的值已更改。

不确定是否有解决此问题的方法,因为我可能使用的是“错误”列。

谢谢

1 个答案:

答案 0 :(得分:0)

按照How to Use Tables: Sorting and Filtering

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel(table.getModel());
table.setRowSorter(sorter);

TableRowSorter使用java.util.Comparator对象对其行进行排序。实现此接口的类必须提供一个称为compare的方法,该方法定义如何比较两个对象以进行排序。

Comparator<String> comparator = new Comparator<String>() {
    public int compare(String s1, String s2) {
        return Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
    }
};