【问题标题】:JTable sort by dateJTable 按日期排序
【发布时间】:2012-07-23 17:12:00
【问题描述】:

我有一个 JTable 有两列,fileNamedate modified。我为第一列添加了名称 String 并为第二个 dateTime 列添加了 new Date(tempFile.lastModified())

我将 dateTime 列呈现为 new SimpleDateFormat("MM/dd/yy HH:mm:ss") 字符串。

我还启用了m_listTbl.setAutoCreateRowSorter(true);

但是修改日期列的排序结果不对。

这是为什么?我还需要编写自己的分拣机吗?

编辑:

在注释掉几乎所有额外代码且未按日期字符串呈现后,我得到以下结果。默认情况下,JTable Java 似乎按 dayDate 对象进行排序。我将进行更多测试以查看我的代码有什么问题。

EDIT2

我已经测试并弄清楚了。如果你使用 DefaultTableModel 而不覆盖它的 getColumnClass() 方法,你会遇到 Date 或 Number 列的问题。

【问题讨论】:

  • 因为你的代码有问题。向我们展示相关代码。
  • 您是说默认情况下,JTable 将能够正确排序 Date 吗?那么我会更仔细地查看我的代码。
  • 你为什么不自己定义它们的可比性,这将有更多的用途,然后学习如何使用一些任意的表格排序方法。
  • @TylerHeiks:无需说明它们的可比性,因为 Date 已经实现了 Comparable。
  • 考虑 table.setRowSorter(new TableRowSorter(model))

标签: java swing sorting jtable


【解决方案1】:

EDIT2:当然。在链接到tablemodel 的 jtable 中遇到同样的问题我可以确认问题是由于与tableModel 中的列值 (EDIT2) 关联的类所致。令人惊讶的是,当覆盖公共对象getValueAt(int row, int col) 时,无论在我的DefaultTableModel 的子类中返回完美类型的日期,日期列都是对象类。

解决方法是在DefaultTableModel 的子类中覆盖getColumnClass。如果您不这样做,那么当您对 Date 列进行排序时,会在 Object for Dates 上进行排序,结果会很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2016-07-26
    • 2016-10-22
    • 2014-09-07
    相关资源
    最近更新 更多