Problema com Scrool de Colunas em Jtable

7 respostas
kanofe

Tenho um Jtable com mais de 20 campos, e mais de 500 linhas, quanto a parte das linhas ela cria a ScroolBar para rolagem, mas nas colunas elas ficam todas apertadas dentro do tamanho da jtable nao cria a barra de Scroll.
Segue Abaixo codigo de Criação da Tabela.

ObjectTableModel<Clientes> tableModel = new ObjectTableModel<Clientes>(
                resolver, "clieCodigo,clieNome,clieRazaosocial,clieTipo,clieCnpjcpf,clieRgie,clieEndereco,clieEndcompl," +
                "clieBairro,clieCidade,clieUf,clieCep,clieFone,clieEmail,clieClasse,clieSituacao,clieMotivo,clieDtcad," +
                "clieVendCodigo,clieRotaCodigo,clieSeqentrega,clieCaractrib,clieFormaspgto,clieStatus,clieComportamento," +
                "clieRamoatividade,clieLimite,clieSaldo,clieDescgeral,clieDescprod,clieControle");

        List<Clientes> lst = getLista();
        tableModel.setData(lst);
        tableModel.setEditableDefault(false);
        TbClientes.setAutoResizeMode(TbClientes.AUTO_RESIZE_ALL_COLUMNS);
        TbClientes.setAutoscrolls(true);
        TbClientes.setModel(tableModel);
        TbClientes.setAutoscrolls(true);
        TbClientes.setCellSelectionEnabled(false);

7 Respostas

Marky.Vasconcelos

Isso é por causa do JScrollPane. Não lembro qual parametro muda pra ter essa barra de scroll também.

Vou procurar e te falo.

PS: Meu table model :slight_smile:

Marky.Vasconcelos

Ahh… o JScrollPane já tem ambas scrollbars… mas pelo o que vi voce nao esta usando ele está?

e com

TbClientes.setAutoResizeMode(TbClientes.AUTO_RESIZE_ALL_COLUMNS);

Ele redimensiona todas as colunas para caberem no getPreferredSize de onde a tabela está.

kanofe

Ola sim mark seu table model, inclusive muito bom, resolveu meu problema de preencher a tabela com o List.
Estou usando sim um JScrollPane, ainda seto para ter as barras de Rolagem, tanto horizontal como vertical.

jScrollPane1 = new javax.swing.JScrollPane();
        TbClientes = new javax.swing.JTable();
         jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setViewportBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jScrollPane1.setViewportView(TbClientes);
Marky.Vasconcelos

Mas com o TbClientes.AUTO_RESIZE_ALL_COLUMNS as colunas são redimensionadas para caber no PreferredSize que no caso da JTable vai retornar o tamanho do JViewport do JScrollPane.

kanofe

Ola funcionou,
coloquei como off
TbClientes.AUTO_RESIZE_OFF.
Me diz uma coisa como vc seta os tamanhos das colunas, vc seta elas manual pq digamos tenho o campo nome, e tenho posso ter até 40 caracteres nele, queria setar o tamanho da coluna baseado em anotations, como o nome.

Marky.Vasconcelos

Eu tenho um método que calcula o tamanho das colunas sózinho de acordo com a maior célula preenchida de cada coluna.

Vou terminar isso e depois vou fazer o upload pro Mark Utils

kanofe

Legal, enquanto isso vou tentar criar algo por aki depois da tabela ja criada, tbm baseado no maior campo que esta na coluna.

Criado 10 de setembro de 2009
Ultima resposta 11 de set. de 2009
Respostas 7
Participantes 2