JTable与jgoodies排序麻烦



我在JTable的排序功能中遇到了阻塞问题;这使得这个业余开源项目的开发拖延了4个月。希望你能给我指出正确的方向。

上下文:我正在扩展ps3mediasserver的功能,以添加一个带有pms-mlx的媒体库。媒体服务器的UI已经使用swing完成。

问题:当单击JTable中的列标题时,一个看似随机的列被排序,而不是被单击的列。

当前实现:这是用于实现的不同组件和类的描述:

  • ettable:由于JTable默认情况下不支持替代行颜色,所以我切换到扩展JTable的ettable。来源来自这里
  • FileDisplayTable:这是创建表的类。在init()方法中,排序是通过'table.setAutoCreateRowSorter(true);'
  • 启用的
  • FileDisplayTableCellRenderer:存在以始终在左侧对齐单元格内容
  • FileDisplayTableColumnModel:在内部类型和列名之间做一些映射
  • FileDisplayTableAdapter:这个类实现了com.jgoodies.binding.adapter.AbstractTableAdapter来映射对象和表列。

可能的解决方式:

  • 最好,我想保持当前的实现,并找出如何纠正排序,但我怀疑有人能帮我解决这个问题!此外,由于奇怪的行为,我不得不添加一些代码;它们在代码
  • 中被注释
  • 另一种选择是完全更改另一个控件的JTable。我做了一些研究,但没有找到我想要的解决方案。约束条件是
    • 必须可嵌入到swing UI
    • 最好支持数据绑定
    • 支持交替行颜色
    • 行排序

在某些时候,可能会打开一个编辑对话框,其中必须检索行内容,可以编辑行,并且在保存行时必须更新行。

在重写整个东西之前,我想确保组件能够处理我想用它做的所有事情。

我更习惯于在Visual Studio中使用。net创建gui。这是完全不同的,更困难的是做同样的挥杆。请告诉我我错了:)

[edit]如果有人愿意重现这个问题,要么获得源代码,要么获得二进制文件,启动应用程序,导航到媒体库选项卡。在"常规"部分,通过添加一些视频文件导入一些视频。转到库部分,单击apply以刷新列表,并尝试对表进行排序。

知道JTable列可以被用户拖动可能是有用的。因此,视图(JTable或子类)和模型(TableModel的实现)可能具有不同的列号。类似地,与模型相比,RowSorter可能会影响视图中的行顺序或行数。相关的转换方法在如何使用表:排序和过滤中提到。特别是:"当使用排序器时,一定要记住转换单元格坐标。"

附录:作为一种替代方案,可以考虑org.netbeans.swing.etable.ETable或它的子类org.netbeans.swing.outline.Outline,如图所示。

最新更新