jTable将所有内容排序为String

问题描述 投票:0回答:1

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

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)
java mysql swing jtable columnsorting
1个回答
0
投票

您需要覆盖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;
}
© www.soinside.com 2019 - 2024. All rights reserved.