JTable 的排序功能存在阻塞问题;这使得空闲时间开源项目的开发暂停了 4 个月。希望在这里被指出正确的方向。
上下文: 我正在扩展 ps3mediaserver 的功能以添加带有 pms-mlx 的媒体库。媒体服务器的 UI 已经使用 Swing 完成。
问题: 单击 JTable 中的列标题时,看似随机的列被排序而不是被单击的列。
当前实现: 以下是用于实现的不同组件和类的描述:
可能的解决方案:
在某些时候,可以打开一个编辑对话框,其中必须检索行的内容,可以编辑,并且在保存时必须更新该行。
在重做整个事情之前,我想确保该组件能够处理我想用它做的所有事情。
我更习惯于在 Visual Studio 中使用 .NET 创建 GUI。用swing做同样的事情是完全不同的,而且要困难得多。请告诉我我错了:)
[编辑] 如果有人愿意重现该问题,请获取源代码或二进制文件,启动应用程序,导航到媒体库选项卡。在一般部分通过添加一些视频文件导入一些视频。转到库部分,单击应用以刷新列表并尝试对表格进行排序。
最佳答案
知道用户可以拖动 JTable
列可能很有用。因此, View ( JTable
或子类)和模型( TableModel
的实现)可能具有不同的列号。类似地,与模型相比,RowSorter
可能会影响 View 中的顺序或行数。 How to Use Tables: Sorting and Filtering 中提到了相关的转换方法。特别是:“使用分拣机时,请始终记住翻译单元格坐标。”
附录:作为替代方案,考虑 org.netbeans.swing.etable.ETable
或其子类 org.netbeans.swing.outline.Outline
,描述为 here 。
关于java - JTable 与 jgoodies 排序麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7172097/