jTable сортирует все как строку - PullRequest
0 голосов
/ 24 ноября 2018

Я загружаю данные из базы данных MySQL (JDBC) и отображаю их в jTable:

PreparedStatement pstmt = (PreparedStatement) connection.prepareStatement(query); 
pstmt.setInt(1,idUser);
result = pstmt.executeQuery();

jTable.setModel(DbUtils.resultSetToTableModel(result));

Я использую Netbeans, в свойствах jTable в свойствах я устанавливаю autoCreateRowSorter в значение true.Сортировка работает, однако, некоторые из столбцов должны быть отсортированы как значения int, но, например, идентификатор пользователя сортируется как String.Я не знаю, как инициализировать таблицу таким образом, чтобы я мог выбрать тип столбца.Тогда сортировка должна работать правильно.Возможно, это можно сделать в этой строке кода (ниже), поэтому я прошу совета у кого-то более опытного.

jTable.setModel(DbUtils.resultSetToTableModel(result)); 

Я также могу добавить, как выглядят столбцы в моей таблице:

UserID(int) / name(String) / surname(String) / phone number(int) / 
dateTime(e.g. 2018-11-03 19:02:45 - may remain in the programme as String)

1 Ответ

0 голосов
/ 24 ноября 2018

Вам необходимо переопределить getColumnClass(...) JTable, чтобы сообщить таблице, какой тип данных в каждом столбце, чтобы таблица могла использовать соответствующий рендер / редактор и Compartor для каждого столбца.

Что-то вроде:

@Override
public Class getColumnClass(int column)
{
    for (int row = 0; row < getRowCount(); row++)
    {
        Object o = getValueAt(row, column);

        if (o != null)
        {
            return o.getClass();
        }
    }

    return Object.class;
}
...