Mostrar header da coluna ao arrastar a coluna

Eu implementar o código no GroupableHeader e tentar habilitar o reordenamento permitido, mas eu tenho dois problemas:

1: ao arrastar uma coluna, o header não vê a coluna
2: Como restringir a área arrastada da coluna para impedir a saída da coluna do columnGroup

Eu não entendo porque o header não vê na coluna arrastando, eu li o header da tabela api mas não encontrei nenhuma solução. Alguma idéia para resolver esses problemas?

Meu antecessor também pensou que usar o código copiado da internet era uma boa idéia … felizmente para a minha empresa, eu não

Eu passei cerca de 4 semanas do meu tempo livre BasicTableHeaderUI a implementação e comparando-a com o BasicTableHeaderUI padrão para descobrir como reintegrá-la …

  • Ordenação de coluna, incluindo, limitando as colunas agrupadas para lá grupo
  • Ordenação de linha
  • Vários outros pedaços

Esta é uma solução incompleta, como eu ainda não cheguei ao ponto em que quando você arrasta um grupo e mostra todas as colunas do grupo, mas isso é dentro do TableUI

Grupos de colunas arrastáveis

Infelizmente, não posso colar o código, está acima do limite de 3000 caracteres, mas você pode pegar uma cópia daqui

Uma solução um pouco mais completa: JBroTable .

É baseado na resposta do MadProgrammer. Ele também restringe a extração de colunas do grupo. E traz alguns resources extras:

  • Número arbitrário de linhas
  • API natural para criação de modelos
  • Suporte genérico para outros L & Fs (sistema Windows L & F, GTK, Nimbus etc.)

Criação de modelo de amostra:

 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" ) ) ) }; 

Resultado:

Resultado

Demonstração animada (2.5M)

Atualizar:

Adicionado desenho de todo o grupo de colunas arrastadas.