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

时间:2013-07-22 08:56:36

标签: java swing jtable rowsorter

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

我需要更改此行为,因此第一次单击列标题会使SortKey成为主要行为,单击到另一个列标题会使该列的SortKey成为辅助列,依此类推。

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

目前,我实现了自己的TableHeader,以便在用户点击列标题时捕获事件,以便适当地改变SortKeys。

用一个例子说明它:

[ One | Two ↑1 | Three ↓2 | Four | Five ↑3 ]
[     |        |          |      |         ]

用户点击第一列的标题后:

[ One ↑3 | Two  | Three ↓1 | Four | Five ↑2 ]
[        |      |          |      |         ]

我想知道您是否认为这是一种好方法?

1 个答案:

答案 0 :(得分:1)

  • 需要覆盖每列的SortKeys,因为每列应该是自己的arrays of SortKeys(如果需要,请确定)

  • 有理由在SortKeys的可见矩形回归中使用最大6-8 JViewport,其他我可以通过重新绘制来看到JScrollPane内的性能问题和鬼魂

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

  • for example

  • 您可以以编程方式显示排序图标