jTable - tamanho das colunas e barra horizontal

Caros. Este é o meu primeiro tópico aqui no GUJ.
Preciso que meu jtable tenha tamanhos diferentes para cada coluna, e ao mesmo tempo, que apareça a barra horizontal.
Se eu seto:

jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

tudo bem, a barra aparece, mas os tamanhos definidos em meu render não são mais implantados.

Pergunto:
Existe alguma forma de implantar o jtable com tamanhos de colunas diferentes e com abarra horizontal?

Sim

tabela.getColumnModel().getColumn(NUMERO DA COLUNA).setWidth(NOVO TAMANHO);

Você pode também definir o tamanho máximo e o minimo das colunas, que na minha opinião é mais útil.

Então Thiago, veja
no meu render tenho:

    //seta o tamanho da coluna
    modeloDaColuna2.getColumn(5).setMaxWidth(300);
    //seta a posição do texto dentro das células da coluna do jtable
    modeloDaColuna2.getColumn(0).setCellRenderer(rendererEsquerda);

Funciona. Mas quando tenho muitas colunas, elas não cabem no scroll, ai, tá feita a caca.

Eu preciso que mesmo setando modeloDaColuna2.getColumn(5).setMaxWidth(300); apareça a barra horizontal.

Opa Thiago.
Consegui…ufa

Tava setando apenas o tamanho máximo e não o tamanho mínimo, logo ele pagava o mínimo o tamanho defaut.

No meu model eu setei para todas as colunas o tamanho máx e min:

    modeloDaColuna2.getColumn(5).setMaxWidth(300);
    modeloDaColuna2.getColumn(5).setMinWidth(300);

e setei também:

jTable2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

Ai ficou certo o tamanho das colunas e a barra horisontal funcionou.

Obrigado mesmo assim.

Aí, fera…
Se eu entendi o que você está precisando, quando quero o mesmo resultado eu faço o seguinte…

jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);

E então, para cada coluna eu defino o tamanho que deverá receber…

jTable.getColumn(jTable.getColumnName(0)).setPreferredWidth(100); jTable.getColumn(jTable.getColumnName(1)).setPreferredWidth(230); jTable.getColumn(jTable.getColumnName(2)).setPreferredWidth(300); jTable.getColumn(jTable.getColumnName(3)).setPreferredWidth(80);
Testa aí e diz se funciona…
Um abraço!

Hehehe…
Parece que já conseguiu, porém usando max e min você duplica as linhas de código e consequentemente a implementaçao da JTable para os métodos…
Se você usar setPreferredWidth() vai ser uma melhor prática, lembrando que deverá definir todas as colunas…
Um abraço!

Pode ateh ser uma linha a menos de codigo porem com o Max e o Min caso vc mecha no tamanho das colunas com o mouse elas ficaram diferente do tamanho preferido, o tamanho preferido nao eh fixo, pode ser variado durante a execucao desta forma nao garante que a coluna permanecera fixa do tamanho desejado.

flw

Aí, brother…
Com certeza!
Então, mas é muito específico o caso onde você não queira que alguém altere o tamanho da coluna se quiser…
Aliás, o mais interessante é justamente dar a possibilidade do usuário poder alterar o tamanho, caso queira visualizar no momento a coluna um pouco mais larga ou um pouco mais curta…
E, sendo assim, você pode bloquear o redimensionamento de colunas específicas… É tudo uma questão de aplicação…
Eu não quis julgar que o max e o min não são aplicáveis, mas temos que dar possibilidades na medida do possível…
E é sempre bom saber fazer as mais diversas maneiras, não é mesmo?
Um abraço!

Opa. Obrigado pelas respostas, realmente jTable tá o que falar…trocinho complicado.

No meu caso aqui é muito interessante que o usuário não altere a largura da coluna, visto que tenho mais de 15 colunas a serem ezibidas.

Mas obrigado pela dica Linkel