Java 改变JTable多列排序行为的最简单方法是什么?

Java 改变JTable多列排序行为的最简单方法是什么?,java,swing,jtable,rowsorter,Java,Swing,Jtable,Rowsorter,默认情况下,如果在JTable的行分类器中有多个SortKey,则每次单击列标题都会使该列的SortKey成为主SortKey 我需要更改此行为,以便第一次单击列标题时使该排序键成为主标题,单击另一列标题时使该列的排序键成为次标题,依此类推 此外,当到达maxSortKeys时,单击另一个(未排序)列将触发排序键的混乱。新单击的列将具有最低优先级的SortKey,主键列将丢失其SortKey,具有次SortKey的列将成为主列,以此类推 目前,我实现了自己的TableHeader,以便在用户单击

默认情况下,如果在JTable的行分类器中有多个SortKey,则每次单击列标题都会使该列的SortKey成为主SortKey

我需要更改此行为,以便第一次单击列标题时使该排序键成为主标题,单击另一列标题时使该列的排序键成为次标题,依此类推

此外,当到达maxSortKeys时,单击另一个(未排序)列将触发排序键的混乱。新单击的列将具有最低优先级的SortKey,主键列将丢失其SortKey,具有次SortKey的列将成为主列,以此类推

目前,我实现了自己的TableHeader,以便在用户单击列标题时捕获事件,以便适当地洗牌排序键

用一个例子来说明这一点:

[ One | Two ↑1 | Three ↓2 | Four | Five ↑3 ]
[     |        |          |      |         ]
用户单击第一列的标题后:

[ One ↑3 | Two  | Three ↓1 | Four | Five ↑2 ]
[        |      |          |      |         ]
我想知道的是,您是否认为这是一个好方法?

  • 需要为每列重写
    排序键
    ,因为每列都应该是自己的
    排序键数组
    (如果需要,请确保)

  • 在可见矩形返回框中使用最多6-8个排序键是合理的,通过重新绘制,我可以在
    JViewport
    中看到性能问题和重影

  • SortOrder.UNSORTED
    不是初始排序顺序,
    JTables
    视图无法存储,请记住,不知道正确的方法,只能从其
    模型中刷新
    JTable

  • 您可以通过编程来显示排序图标


回答您的第一个问题-不一定。我可以简单地修改现有的,改变顺序。删除主要的一个,然后添加一个新的(在示例的最后一个示例中。我通常最多有3个排序键。该示例并不新鲜-在很多项目中都做过多次。:)+1表示愿意提供帮助。:)不知道你的目标是什么,看这里,从我上面的简单例子来看,这不是很明显吗?:)好的,让我试着用你给出的最新示例来解释-运行文章中的应用程序,将最大排序键数设置为3,然后单击尚未排序的列。您将看到该列获得了主SortKey—我不希望如此!:)之后,检查我的ASCII示例,看看我希望它如何工作:Dstill不清楚,问题是按列排序的,或者…,最好是在每个列上贴一个SSCCE,描述将要发生的事情。算了吧,无论如何,谢谢。我不能对我的每一个简单问题都做SSCCE。:)我必须工作。简单的SSCCE是一个带有setMaxSortKeys(3)的普通JTable;在这之后,使任何列进行排序,然后只需单击任何未排序的列。-它将成为主排序列。这完全是荒谬的行为,我想改变这种情况,让第二个变成第一个,第三个变成第二个,等等……)我将清理我的表格标题,并将其张贴在这里,作为我是如何做到这一点的一个例子。也许明天。。。