Я думаю, что поскольку вы зависите только от типа Comparable, вы можете переписать его как:
public int compare(DataRow r1, DataRow r2) {
Comparable o1 = (Comparable) r1.getColumns()[idx];
Comparable o2 = (Comparable) r2.getColumns()[idx];
return o1.compareTo(o2);
}
Если вы аккуратно заполняете таблицу, вы не должны сталкиваться с ситуацией UnsupportedOperationException.