java - 如何按显示值而不是内部值对表进行排序?

标签 java swing jtable tablerowsorter

我正在使用ETable在标准 JTable 上添加一点功能。

我面临的问题是单击列标题时如何正确对表格进行排序。目前,我有一个日期字段,以原始( double )格式显示修改儒略日期 (MJD)。在内部,它是一个 MJD 对象(看起来像一个日期字符串)。当表排序时,列会以默认方式(字典排序)进行处理,从而生成一个类似 1.0, 10.0, 100.0, 101.0, ... 的列表。如果我显示 MJD 对象而不是 double 形式,则它会正确排序;但是,我需要将其显示为 double 。 如何强制根据显示内容进行比较和排序?

请注意,我已经查看了此处发布的几个类似问题,例如 Java JTable Sorting Doesn't Work for Just One Column 。这种类型的解决方案对我不起作用,因为我不能简单地返回该列的 double 类,因为它在内部是不同的对象类型。

最佳答案

JTable tutorial 中所示,您可以在表格或特定列上设置 TableRowSorterDefaultRowSorter#setComparator 在您的情况下很有趣:您可以为所有列重复使用默认行排序器,只需为该特定列指定一个自定义Comparator

当然,如果表模型中的对象已经实现了Comparable,则无需设置自己的Comparator。只需确保 TableModel#getColumnClass 返回正确的类即可。

关于java - 如何按显示值而不是内部值对表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983074/

相关文章:

java - sqlq 无法解析为变量

java - 如何更新表模型多行列?

java - 将 JComboBox 添加到 jTable,每行包含特定数据

java - 如何使用 EasyMock 模拟测试类中正在实例化的类?

java - 是否可以更改 Intellij Idea 中 junit4 测试的默认类名模板?

java - 在 Java 中创建对象时,如何将现有数字加 1?

Java Swing JTree 扩展

java - JDialog返回值?

Java Netbeans 8.0 Jframe GUI 程序 - arraylist 中的每个索引值未显示在 jtextArea 中的单独行上

java - 如何用空的 JTable 行填充 JScrollPane 的高度?