我正在尝试对 int 类型的数据进行排序JTable
,我知道我需要设置一个新的比较器,以便将 int 类型的数据排序为 1,2,3,10,20 而不是 1,10,2,20, 3 但是使用方法后结果仍然是错误的顺序setComparator
,所以有人可以告诉我该怎么做吗?
代码如下
JTable tblGui = new JTable;
TableRowSorter<DcfTableModel> sorter = new TableRowSorter<DcfTableModel>(internalTable);
tblGui.setRowSorter(sorter);
sorter.setModel tblGui.getModel());
for (int i = 0; i < tblGui.getColumnCount(); i++){
sorter.setComparator(i, new IntComparator());
}
新比较器的代码是这样的:
public class IntComparator implements Comparator<String> {
@Override
public int compare(String arg0, String arg1) {
// check for null
if (arg0 == null && arg1 == null) {
return 0;
}
if (arg0 == null) {
return -1;
}
if (arg1 == null) {
return 1;
}
// check for empty string
if (arg0.equals("") && arg1.equals("")) {
return 0;
}
if (arg0.equals("")) {
return -1;
}
if (arg1.equals("")) {
return 1;
}
try {
Integer.parseInt(arg0);
}
catch (Exception e) {
return 1;
}
try {
Integer.parseInt(arg1);
}
catch (Exception e) {
return -1;
}
//integer comparison
return (Integer.parseInt(arg0))-Integer.parseInt(arg1);
}
}
修复它,只需要添加一个监听器来点击标题来为自定义比较器设置 TableRowSorter。