在拖动列上显示列标题

时间:2013-11-26 00:55:13

标签: java swing jtable drag-and-drop jtableheader

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

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

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

2 个答案:

答案 0 :(得分:7)

我的前任也认为使用他们从互联网上复制的代码是一个好主意...幸运的是我的公司,我不

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

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

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

之内

Draggable column groups

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

答案 1 :(得分:2)

更完整的解决方案:JBroTable

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

  • 任意行数
  • 用于模型创建的自然API
  • 对其他L& Fs的一般支持(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" ) ) )
};

结果:

Result

Animated demo(2.5M)

<强>更新

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