在线上有太多关于如何按列值对JTable的行进行排序的示例。

目前,我正在通过实现AbstractTableModel并重写getColumnClass来返回数据的实际类来执行此操作。然后调用setAutoCreateRowSorter

如何按行值对JTable中的列进行排序?

最佳答案

1)将所有值从TableHeader提取到短数组(可能是AbstractTableModel中的方法)

2)在数组内部循环并调用

TableColumn column = table.getColumnModel().moveColumn(columnIndex, newIndex);


3)所有使用Model v.s.添加视图(反之亦然)

table/model#convertXxxIndexToXxx


4)对于重置,您必须通过调用在AbstractTableModel中创建方法

fireTableDataChanged(); or fireTableStructureChanged(); // not sure in this case


5)关于以上两个fireTableXxxXxx的通知

This can be a problem if you have added any custom renderers or editor to
the table as you would lose them (by @camickr)

10-08 02:06