【问题标题】:jTable sorts everything as StringjTable 将所有内容排序为字符串
【发布时间】:2019-04-26 20:38:11
【问题描述】:

我从 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)

【问题讨论】:

  • 欢迎来到 Stack Overflow!寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误重现它所需的最短代码在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: java mysql swing jtable columnsorting


【解决方案1】:

您需要覆盖JTablegetColumnClass(...) 以告诉表格每列中的数据类型,以便表格可以为每列使用适当的渲染/编辑器和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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2022-01-09
    • 2012-10-19
    相关资源
    最近更新 更多