Colunas no JTable

1 resposta
J

Oi!!

Gente estou com uma dúvida e gostaria de uma ajuda!

Tenho um jTable que insiro dados do Banco nele!!

Gostaria que a largura da coluna fosse definida a partir do comprimento da maior String dessa coluna!! Tipo assim:

|…A…|…B…|
|Xxxxxxxx…|9999999| Obs: Os pontos representam espaços!
|Yyyyyyyyyyyyy|1111…|

Na coluna “A” a largura da coluna seria definida a partir da String Y…, já na coluna “B” a partir de 99… , pois são as maiores Strings respectivamente!!

Alguém tem um exemplo de código ou sabe se existe um método do jTable para fazer isso?

Muito Obrigada!! :wink:

1 Resposta

S

Olá, que eu saiba, não existe nada “pronto” para isso.

Mas o que pode ser feito é, primeiro, pegar a FontMetric para o componente, no caso a JTable:

FontMetric fm = JTable.getGraphics().getFontMetrics();

Agora, à medida que você insere seus dados na JTable, vá atualizando o maior comprimento por coluna, comparando o que já tem (zero no início) com o comprimento atual. Mais ou menos assim:

int[] maior_comprimento = new int[qtde_de_colunas_da_JTable];

if(FontMetrics.stringWidth(coluna_atual) > maior_comprimento [coluna_atual] {

maior_comprimento [coluna_atual] = FontMetrics.stringWidth(coluna_atual);

}

Por último, para cada coluna de sua JTable, defina a largura de acordo com o que armazenou:

For (int coluna = 1; 

{

TableColumn col =  JTable.getColumnModel().getColumn(coluna);

col.setMinWidth( maior_comprimento[coluna - 1] );

col.setPreferredWidth( maior_comprimento[coluna - 1]) );

col.setResizable(false);

}

voilá!

Criado 25 de novembro de 2004
Ultima resposta 27 de nov. de 2004
Respostas 1
Participantes 2