gpt4 book ai didi

java - 如何使用 JTable 的行排序器恢复原始行顺序?

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:10 26 4
gpt4 key购买 nike

我已经使用 setAutoCreateRowSorter 方法在 JTable 中启用了排序。鼠标单击列标题将在升序和降序之间切换,但我想在升序、降序和原始(未排序)行顺序之间切换。任何提示如何实现这一目标?

最佳答案

鼠标单击到更改排序状态的映射是在 BasicTableHeaderUI 中实现的,并且仅通过 RowSorter 的 toggleSortOrder(columnIndex) 发生。它的默认行为是切换

未排序 --> 升序 --> 降序 --> 升序 --

也就是没有办法返回UNSORTED。如果需求只是将圆圈扩大为:

未排序 --> 升序 --> 降序 -- 未排序 --> 升序 --

方法是子类化 TableRowSorter 并相应地覆盖它的 toggleSortOrder

    /** 
* @inherited <p>
*/
@Override
public void toggleSortOrder(int column) {
List<? extends SortKey> sortKeys = getSortKeys();
if (sortKeys.size() > 0) {
if (sortKeys.get(0).getSortOrder() == SortOrder.DESCENDING) {
setSortKeys(null);
return;
}
}
super.toggleSortOrder(column);
}

注意:这有点简化,因为它不考虑 n 元排序列,请参阅 SwingX DefaultSortController 以获得完整版本。或者使用 SwingX 开始,它的 JXTable 有 api 来配置排序周期,比如

 table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

干杯珍妮特

关于java - 如何使用 JTable 的行排序器恢复原始行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com