jTable将所有内容排序为String

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jTable将所有内容排序为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按字符串排序。我不知道如何以允许我选择列类型的方式初始化表。然后排序应该正常工作。可能它可以在这行代码(下面)中完成,这就是为什么我要求更有经验的人提供建议。

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)
答案

您需要覆盖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;
}

以上是关于jTable将所有内容排序为String的主要内容,如果未能解决你的问题,请参考以下文章

将 ArrayList 制作成 JTable

如何将所有JTable行转换为字符串数组?

在jsp中使用jtable为所有表添加分页

JTable中。从文本文件中排序()

使用特定列对 Jtable 项目进行排序 - JAVA

背景排序JTable后,特定值的颜色不会改变