jTable 将所有内容排序为 String

jTable sorts everything as String

我从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 值,但例如用户 ID 排序为字符串。我不知道如何以允许我选择列类型的方式初始化 table。然后排序应该正常工作。可能可以在这行代码(下面)中完成,这就是为什么我要向更有经验的人寻求建议。

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

我还可以添加 table 中的列的外观:

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)

您需要覆盖 JTablegetColumnClass(...) 以告知 table 每列中的数据类型,以便 table 可以使用适当的 render/editor 和 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;
}