Eu tenho uma JTable na qual defino o tamanho da coluna da seguinte maneira:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(27);
table.getColumnModel().getColumn(1).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setPreferredWidth(90);
table.getColumnModel().getColumn(4).setPreferredWidth(90);
table.getColumnModel().getColumn(6).setPreferredWidth(120);
table.getColumnModel().getColumn(7).setPreferredWidth(100);
table.getColumnModel().getColumn(8).setPreferredWidth(95);
table.getColumnModel().getColumn(9).setPreferredWidth(40);
table.getColumnModel().getColumn(10).setPreferredWidth(400);
Isso funciona bem, mas quando a tabela é maximizada, recebo um espaço vazio à direita da última coluna. É possível redimensionar a última coluna para o final da janela quando redimensionada?
Encontrei um AUTO_RESIZE_LAST_COLUMN
imóvel no docs, mas não funciona.
Editar: JTable
está em um JScrollPane
tamanho de sua preferência definido.
Com
JTable.AUTO_RESIZE_OFF
, a tabela não alterará o tamanho de nenhuma das colunas para você, portanto, assumirá sua configuração preferida. Se o seu objetivo é que as colunas tenham o tamanho padrão de sua preferência, exceto que a última coluna preencha o resto do painel, você tem a opção de usar oJTable.AUTO_RESIZE_LAST_COLUMN
autoResizeMode, mas pode ser mais eficaz quando usado com emTableColumn.setMaxWidth()
vez de TableColumn. setPreferredWidth () para todas, exceto a última coluna.Quando estiver satisfeito com o que de
AUTO_RESIZE_LAST_COLUMN
fato funciona, você pode experimentar uma combinação deTableColumn.setMaxWidth()
eTableColumn.setMinWidth()
fonte
JTable.AUTO_RESIZE_LAST_COLUMN
é definido como "Durante todas as operações de redimensionamento, aplique ajustes apenas à última coluna", o que significa que você deve definir o modo automático no final do seu código , caso contrário setPreferredWidth () não afetará nada!Portanto, no seu caso, esta seria a maneira correta:
fonte
Use este método
Ou estenda a
JTable
aula:E depois
fonte
Lendo a observação do Kleopatra (na segunda vez, ela sugeriu dar uma olhada em javax.swing.JXTable , e agora sinto muito não ter dado uma olhada na primeira vez :)) Sugiro que você siga o link
Eu tinha essa solução para o mesmo problema: (mas sugiro que você siga o link acima) Ao redimensionar a tabela, dimensione as larguras das colunas da tabela para a largura total da tabela atual. para fazer isso, uso uma matriz global de ints para as larguras de coluna (relativas)):
Eu uso esta função para definir as larguras das colunas da tabela:
Ao definir os dados, eu chamo:
e ao mudar eu chamo o ComponentListener definido para o pai da tabela (no meu caso o JScrollPane que é o contêiner da minha tabela):
observe que a tabela JTable também é global:
E aqui eu defino o ouvinte:
fonte
irá padronizar o comportamento de redimensionamento ! Se este método for chamado em algum lugar do seu código DEPOIS de você definir as propriedades de redimensionamento da coluna, todas as suas configurações serão redefinidas. Este efeito colateral pode acontecer indiretamente. Fe como consequência do modelo de dados vinculado ser alterado de uma forma que este método é chamado, após as propriedades serem definidas.
fonte
Não há necessidade da opção, apenas faça com que a largura preferida da última coluna seja a máxima e ela ocupará todo o espaço extra.
fonte
Este código funcionou para mim sem setAutoResizeModes.
fonte
Use este código. Funcionou para mim Eu considerei por 3 colunas. Altere o valor do loop para o seu código.
fonte