【发布时间】:2020-02-25 17:45:14
【问题描述】:
我想对 LocalDateTime 之类的内容进行排序。
在我的JTable 中,我的值如下:
30.10.2019 09:35:34
12.09.2019 07:47:55
12.09.2019 22:49:55
24.09.2019 04:45:39
现在我希望它们被正确排序,例如:
12.09.2019 07:47:55
12.09.2019 22:49:55
24.09.2019 04:45:39
30.10.2019 09:35:34
我尝试自定义我的 TableModel,但没有成功
@Override
public Class<?> getColumnClass(final int columnIndex)
{
if (getColumnName(columnIndex).equals("Datecolumn")) return LocalDateTime.class;
try
{
return getValueAt(0, columnIndex).getClass();
}
catch (final Exception e)
{
return new String().getClass();
}
}
Date.class 或 new Date().getClass() 也不起作用。
也许你对我有一些建议?
更新:
我终于做到了,所以这是解决方案:
table.setAutoCreateRowSorter(true);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(table.getModel());
table.setRowSorter(sorter);
int columnIndexToSort = table.getColumnModel().getColumnIndex("Datecolumn");
sorter.setComparator(columnIndexToSort, new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.uuuu HH:mm:ss");
LocalDateTime ldt1, ldt2;
ldt1 = LocalDateTime.parse(o1, formatter);
ldt2 = LocalDateTime.parse(o2, formatter);
return ldt1.compareTo(ldt2);
}
});
我知道还有很多其他方法可以解决这个问题,但这是第一个适合我的方法。
这可能会对您有所帮助:
https://www.codejava.net/java-se/swing/6-techniques-for-sorting-jtable-you-should-know
有什么改进吗?
【问题讨论】:
-
排序一般可以通过TableModel来实现。您是否已调试并确信列名与“Datecolumn”匹配?
-
您的专栏需要可编辑吗?
-
tomgeraghty3:当我调用“getColumnClass”方法时,我得到了正确的类,但排序不起作用 Ole V.V:不,它没有
-
如需更好的帮助,请edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。对一些数据进行硬编码。
标签: java swing sorting datetime jtable