java - JTable 行排序而不更改 "Sl No"列

标签 java swing jtable comparator tablerowsorter

在我的 JTable 中,除了其他列之外,我还有一个“序列号”列,它只是对表中的记录进行编号。我希望在通过单击 JTable 列标题对行进行排序时修复此列。排序进展顺利,但“序列号”在此过程中混淆了。有什么办法可以保留“序列号”吗?当我对行进行排序时,列是否固定?

感谢您对此的帮助。

示例:

SlNo 名称
约翰一书
2 彼得
3 阿历克

对此进行排序(单击“名称”列)后,我得到:

SlNo 名称
3 亚历克
约翰一书
2 彼得

但是,我希望结果为:

SlNo 名称
1 亚历克
约翰二书
3 彼得

最佳答案

您是否尝试过实现自己的 TableRowSorter

看看Sorting and Filtering

更新

我一直在挖掘代码来检查这一点。这是可行的,但你必须重新发明轮子才能让它发挥作用。

默认实现只是将行/列值进行比较(getValueAt(row, column)),这很好,但不会为您提供任何上下文来做出您需要的决策make(即哪一行被排序,行值可能是什么等),事实上过滤器提供了更有值(value)的信息:P...

您真正想要覆盖的方法是私有(private)的...(DefaultRowSorter.compare),但我不确定它会以任何方式执行您想要的操作...

您剩下的唯一解决方案是从头开始实现您的解决方案(从 RowSorter 开始),该解决方案能够为您提供执行子组排序所需的所有信息。像表格模型、比较行和列之类的东西......

关于java - JTable 行排序而不更改 "Sl No"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12559835/

相关文章:

java - jmenu 中的图像来自 java 中的 jar 文件

java - JTable 中的列不更新

Java JTable 头不显示

java - 如何使用 Java 和 JFreeChart 创建图表浏览器?

java - 连续循环应用程序的正确方法是什么

java - 原始包装器和静态 "TYPE"类对象

java - 用 Java 创建动态搜索框/表格

java - java中的复选框索引值

java - 更改 Swing 进度条的外观

java - 鼠标监听器界面和绘画