gpt4 book ai didi

swing - 同时对两个 JTable 进行排序

转载 作者:行者123 更新时间:2023-12-04 14:17:57 27 4
gpt4 key购买 nike

我有两个使用相同 TableModel 类的不同对象构建的 JTable。当我单击表 1 中的一列进行排序时,要求另一个表 2 也应根据在 JTable 1 中单击的同一列进行排序。有什么方法可以找到表 1 中使用的列或排序基于。使用它,是否有任何方法可以通过表 2 上同一列的任何方法调用来调用排序。

请提供您的建议或指向任何 java api 的指针。另外,如果有任何链接有一个例子会很有帮助。
-保罗。

最佳答案

走的路是监听表的sorter的变化,将第二张表的sortKeys设置为相同:

    RowSorterListener l = new RowSorterListener() {

@Override
public void sorterChanged(RowSorterEvent e) {
if (RowSorterEvent.Type.SORT_ORDER_CHANGED == e.getType()) {
RowSorter sorter = e.getSource();
otherTable.getRowSorter().setSortKeys(sorter.getSortKeys());
}
}

};
table.getRowSorter().addRowSorterListener(l);

如果您需要保持双向同步,请将监听器注册到两者并添加一些逻辑,以便在监听器触发排序更改时不执行任何操作。

编辑

在写了两次几乎相同的评论后(建议对模型进行排序的答案),决定在这里添加
  • 从技术上讲,排序可以由模型或 View 领域负责。两种方式都有(过去激烈争论)利弊。完成后,在 ui dev 中处处坚持该决定
  • 保持模型和 View 坐标系之间的索引映射是挑战隐藏的地方,无论哪种方式
  • Swing/X 决定将其视为 View 责任,将任何基于模型的自定义排序/同步塞在顶部正在与系统作斗争
  • 关于swing - 同时对两个 JTable 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843991/

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