Redimensionar largura das colunas de jTable

5 respostas
claudneto

Já tentei:

tabela.getColumn(0).setWidth(1);
tabela.getColumn(0).setPreferredWidth(1);
DefaultTableModel model = tabela.getModel();

model.getColumn(0).setPreferredWidth(1);

Como faz para deixar fixa a largura da coluna de uma tabela antes de popullá-la com valores?

5 Respostas

dreampeppers99

claudneto se for só pra mostrar acho que você deveria dar uma olhada no JTable Annotations é bem simples:

Basicamente você anota sua entidade (que irá ser mostrada na JTable) por exemplo:

@JTableConfiguration(rowHeight=48) public class Product { @JTableColumnConfiguration(order=1,width=55) private Long id; @JTableColumnConfiguration(order=2,width=300,editable=true,align=Align.CENTER) private String name; @JTableColumnConfiguration(order=3,name="Price",decimalFormat="U$ 0.00") private BigDecimal value; @JTableColumnConfiguration(order=4,name="Costumer Name",width=300) private Customer customer; @JTableColumnConfiguration(order=0,name="Photo",cellRender=IconCellRender.class) private String picturePath;
Aqui você já passa a ordem, nome da coluna, se ela é editável, o alinhamento do texto, mascara E COMO VOCÊ DESEJA A LARGURA (width).

Depois de anotar basta passar sua lista para o Configurator e ele já irá configurar sua JTable passada.

new Configurator().configureAndPopulateJTable(jTable, list);

O resultado deve ser algo assim: (para esse exemplo)

E se disso tudo você não quiser usar o framework pode usar o código fonte pra ver como é feita a atribuição do width.

O_Monge

claudneto:

tabela.getColumn(0).setWidth(1);

[/code]

Como faz para deixar fixa a largura da coluna de uma tabela antes de popullá-la com valores?

Quase isso… acho que é

tabela.getColumnModel().getColumn(0).setWidth( 1 );
claudneto

dreampeppers99:
claudneto se for só pra mostrar acho que você deveria dar uma olhada no JTable Annotations é bem simples:

Basicamente você anota sua entidade (que irá ser mostrada na JTable) por exemplo:

@JTableConfiguration(rowHeight=48) public class Product { @JTableColumnConfiguration(order=1,width=55) private Long id; @JTableColumnConfiguration(order=2,width=300,editable=true,align=Align.CENTER) private String name; @JTableColumnConfiguration(order=3,name="Price",decimalFormat="U$ 0.00") private BigDecimal value; @JTableColumnConfiguration(order=4,name="Costumer Name",width=300) private Customer customer; @JTableColumnConfiguration(order=0,name="Photo",cellRender=IconCellRender.class) private String picturePath;
Aqui você já passa a ordem, nome da coluna, se ela é editável, o alinhamento do texto, mascara E COMO VOCÊ DESEJA A LARGURA (width).

Depois de anotar basta passar sua lista para o Configurator e ele já irá configurar sua JTable passada.

new Configurator().configureAndPopulateJTable(jTable, list);

O resultado deve ser algo assim: (para esse exemplo)

E se disso tudo você não quiser usar o framework pode usar o código fonte pra ver como é feita a atribuição do width.

Vlw, cara! Vou dar uma lida nisso ai sim!

O_Monge, não funcionou dessa maneira!

discorpio

Boa tarde a todos.

Para voce redimensionar as colunas de um JTable no código, primeiro voce precisa desativar ou AutoResizeMode do JTable, pois quando este atributo estiver setado para true, não adianta nada voce redimensionar no código, porque ele vai autoredimensionar de acordo com o valor padrão pré configurado que vier na coluna, portanto faça assim:

.....
    tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    
    // Ai voce pode escolher
    tabela.getColumnModel().getColumn(0).setPreferredWidth(1);
    // ou
    tabela.getColumnModel().getColumn(0).setWidth(1);
    // ou
    tabela.getColumnModel().getColumn(0).setMinWidth(0);
    tabela.getColumnModel().getColumn(0).setMaxWidth(1);
claudneto

discorpio:
Boa tarde a todos.

Para voce redimensionar as colunas de um JTable no código, primeiro voce precisa desativar ou AutoResizeMode do JTable, pois quando este atributo estiver setado para true, não adianta nada voce redimensionar no código, porque ele vai autoredimensionar de acordo com o valor padrão pré configurado que vier na coluna, portanto faça assim:

.....
    tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    
    // Ai voce pode escolher
    tabela.getColumnModel().getColumn(0).setPreferredWidth(1);
    // ou
    tabela.getColumnModel().getColumn(0).setWidth(1);
    // ou
    tabela.getColumnModel().getColumn(0).setMinWidth(0);
    tabela.getColumnModel().getColumn(0).setMaxWidth(1);
</blockquote>

Aeeee…funcionou, mas foi a coluna errada!

=/

Criado 26 de abril de 2011
Ultima resposta 27 de abr. de 2011
Respostas 5
Participantes 4