Метод setComparator не работает при сортировке столбцов JTable типа int

Я пытаюсь отсортировать данные типа 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 для пользовательских компараторов.

0 ответов

Другие вопросы по тегам