当表格处于排序模式(使用RowSorter
)时,似乎大多数时候表格都是实时排序的。例如,每当我添加新行时,表格都会自动排序(编辑单元格除外)。我想知道是否有任何方法可以禁用这种实时排序行为。
我想要做的是:对表进行升序或降序排序后,排序器保持当前排序状态并停止实时排序。然后可以在底部添加新行,并且可以上下移动所选行,并且表格更新 View 模型中的所有更改。
@trashgod:感谢您的回答。我实际上有点喜欢原生行排序方法,因为我可以以三态(升序、降序和未排序)循环列状态。如果使用 Collections.sort,我必须在每次排序之前创建一个变量来保存原始行顺序。
最佳答案
您可以使用 Collections.sort()
独立于 RowSorter
对 TableModel
的行进行排序。和一个自定义的Comparator
,例如所示的 here ,可以接受指定排序方向的参数。
enum Sort { ASCENDING, DESCENDING; }
class RecordComparator implements Comparator<Record> {
public RecordComparator(Sort sort, ...) { ... }
}
关于java - JTable 的非实时/非实时排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842290/