JXTable监听排序并以同样的方式对类似的表进行排序
我有许多 JXTables,它们都有相同的列(但数据不同)。您可以通过单击其中一列的标题对数据进行排序。我现在想要的是,当单击其中一个表的标题时,其他表以相同的方式排序。
I have a number of JXTables which all have the same columns (but different data). You can sort the data by clicking on one the header of one of the columns. What I want now, is that the other tables are sorted the same way when clicking on the header of one of the table.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以定义一个中介器类,该类引用每个
JTable
的RowSorter
并将其自身注册为每个排序器的RowSorterListener
。当给定的排序器发生更改时,您可以使用getSortKets()
检索其当前的排序键列表,并使用setSortKeys(List)
将它们传递给每个其他排序器。示例
首先我们定义中介类:
现在我们实现
sorterChanged(RowSorterEvent e)
来响应给定的排序器事件:You could define a mediator class that references each
JTable
'sRowSorter
and registers itself as aRowSorterListener
with each sorter. When a given sorter changes you could retrieve its current list of sort keys usinggetSortKets()
and pass them to every other sorter usingsetSortKeys(List<? extends SortKey>)
.Example
First we define the mediator class:
Now we implement
sorterChanged(RowSorterEvent e)
to respond to a given sorter event:我不会这样做,因为它会夺走用户的控制权:他/她可能希望对表进行不同的排序,以比较不同的数据。
相反,请在“查看”菜单中添加“排序依据”选项。更改此选项将对所有表进行排序,但随后将其保留,除非用户想要对特定表进行排序。
I would not do that, because it takes control away from the user: s/he may want to have the tables sorted differently, to compare different pieces of data.
Instead, add a "Sort By" option to your View menu. Changing this option will sort all tables, but then leave them alone unless the user wants to sort a specific table.