在拖动列上显示列标题

我在GroupableHeader中实现代码并尝试启用允许重新排序但我有两个问题:

1:拖动列时,标题不会在列上看到
2:如何限制列的拖动区域以防止columnGroup的列退出

我不明白为什么标题在列拖动时看不到,我读了表头api但没有找到任何解决方案。 解决这些问题的任何想法?

我的前任还认为使用他们从互联网上复制的代码是一个好主意…幸运的是,对于我的公司,我没有

我花了大约4个星期的业余时间挖掘实现并将其与默认的BasicTableHeaderUI进行比较,找出如何恢复…

  • 列排序,包括将分组列限制为该组
  • 行排序
  • 各种其他零碎

这是一个不完整的解决方案,因为我还没有达到拖动组并让它显示组中的所有列的程度,但这是在TableUI

可拖动的列组

不幸的是,我无法粘贴代码,它超过了3000个字符的限制,但你可以从这里获取副本

更完整的解决方案: JBroTable 。

它基于MadProgrammer的答案。 它也限制列拖出组。 并带来一些额外的function:

  • 任意行数
  • 用于模型创建的自然API
  • 对其他L&F的一般支持(Windows系统L&F,GTK,Nimbus等)

样本模型创建:

 IModelFieldGroup groups[] = new IModelFieldGroup[] { new ModelFieldGroup( "A", "A" ) .withChild( new ModelField( "B", "B" ) ) .withChild( new ModelField( "C", "C" ).withRowspan( 2 ) ), // Custom rowspan set. new ModelFieldGroup( "D", "D" ) .withChild( new ModelField( "E", "E" ) ) .withChild( new ModelField( "F", "F" ) ), new ModelField( "G", "G" ), new ModelFieldGroup( "H", "H" ) .withChild( new ModelFieldGroup( "I", "I" ) .withChild( new ModelField( "J", "J" ) ) ) .withChild( new ModelField( "K", "K" ) ) .withChild( new ModelFieldGroup( "L", "L" ) .withChild( new ModelField( "M", "M" ) ) .withChild( new ModelField( "N", "N" ) ) ) }; 

结果:

结果

动画演示 (2.5M)

更新:

添加了整个拖动列组的图形。